Я обнаружил, что в новой компании, с которой я работаю, мне часто приходится обращаться к серверам Linux с относительно коротким сроком службы. На каждом из этих серверов у меня есть учетная запись, но всякий раз, когда создается новый, мне приходится сталкиваться с трудностями переноса через мой .bashrc. Однако возможно, что примерно через месяц этот сервер больше не будет. Я также должен получить доступ ко многим другим серверам в течение коротких периодов времени (минут), когда не стоит переносить их через мой .bashrc, но, поскольку я работаю на многих серверах, это тратит впустую много времени.
Я не хочу ничего менять на серверах, но мне было интересно, есть ли способ получить «для каждого соединения» .bashrc, поэтому всякий раз, когда я подключаю SSH к серверу, мои настройки будут использоваться для этого сеанса.
Если это возможно, было бы хорошо, если бы я мог сделать то же самое с другими файлами конфигурации, такими как файлы gitconfig.
источник
Ответы:
Я думаю, что вы хотите (в вашем .ssh / config на машине, с которой вы подключаетесь):
тогда вы можете привести с:
и быть на вашем веселом пути. LocalCommand выполняет команду на сервере, к которому вы подключаетесь, когда он туда попадает, прямо перед вашим фактическим сеансом.
Я также хотел бы убедиться, что sshds на серверах настроены с
PermitLocalCommand yes
Существует множество способов настроить LocalCommand, чтобы он работал в вашей конкретной среде - например, вы можете свернуться с внутреннего веб-сервера или извлечь из монтирования nfs.
источник
; source /path/to/.bashrc
команду scp, чтобы она была получена автоматически. Наконец, не очень важный недостаток этого метода заключается в том, что мне приходится вводить свой пароль дважды. Но в итоге это сработало, так что спасибо.source /path/to/.bashrc
будет выполнено на машине, с которой вы подключаетесь. Команды in неLocalCommand
имеют доступа к сеансу ssh.Я думаю, что sshrc это то, что вы ищете: https://github.com/Russell91/sshrc
Вы можете использовать это для установки переменных среды, определения функций и запуска команд после входа в систему. Это так просто, и это не повлияет на других пользователей на сервере - даже если они тоже используют sshrc. Для более сложной конфигурации, продолжайте читать.
источник
Если вы никогда ранее не подключались к серверу, в ~ / .ssh / known_hosts не будет записи для него.
Вы можете найти заданный известный хост с помощью «ssh-keygen -F», но вам придется проверить этот вывод (grep), так как ssh-keygen не возвращает false в случае пропуска. Обратите внимание, что если вы ссылаетесь на хост по разным идентификаторам (IP-адрес, имя хоста, FQDN), каждый из них рассматривается как отдельный экземпляр.
Вы можете написать оболочку для ssh, которая передает вашу пользовательскую среду на этот хост при первом входе в систему:
ssh-newenv () {если! ssh-keygen -F $ 1 | grep -q "^ # host $ 1 found:"; затем rsync ~ / .bashrc ~ / .bash_profile ~ / .bash_logout $ 1:.; Fi; ssh $ 1; }
Если вы хотите сделать это более надежным, вы можете проверить наличие известного файла среды, хэша или другого маркера на удаленном хосте.
источник
Я не знаю, есть ли за сеанс .bashrc.
Другим решением было бы написать небольшой скрипт, который перенесет все ваши любимые конфигурации в вашу новую домашнюю папку.
Может быть, просто создайте папку со всеми вашими конфигами с путями и просто перенесите их с помощью scp
нравится
а затем
Это экономит время.
источник
Я не думаю, что это возможно, учитывая, что ssh не имеет никакого отношения к вашему
.bashrc
. Это оболочка, которая загружает этот файл, а не ssh.Некоторые идеи:
SendEnv
опцию (см.ssh_config
Справочную страницу для получения дополнительной информации). Если сервер настроен правильно (т. Е. У него есть соответствующий параметрAcceptEnv
в sshd_config), вы можете использовать егоSendEnv
для копирования переменных среды на удаленный хост.ProxyCommand
настройку (см.ssh_config
Справочную страницу) для отправки ваших.bashrc
или других файлов перед подключением к удаленному хосту. Это потребует некоторого тестирования, хотя. Кроме того, будьте готовы, что это может помешать scp.источник
Я думаю, что https://github.com/fsquillace/pearl-ssh делает то, что вам нужно.
Я написал это давным-давно, еще до рождения sshrc, и он имеет больше преимуществ по сравнению с sshrc:
Например:
источник