преамбула
Я работаю в среде с большим количеством серверов и разработчиков. Все серверы, как правило, настроены для простоты использования, поэтому мы все подключаемся к общей учетной записи. Это только внутренние серверы, поэтому безопасность не является большой проблемой. Большинство разработчиков, включая меня, добавляют свои открытые ключи в ~/.ssh/authorized_keys
.
Я хотел бы, чтобы мои обычные настройки среды были доступны после входа в систему.
Что я делаю сейчас вручную
studog@doghouse:~# ssh example.local
common@example:~# . ./studog_profile
common@example:~#
Я бы хотел, чтобы это происходило автоматически.
Дополнительный кредит: я хотел бы всегда выдвигать мой текущий .studog_profile
и поэтому у меня всегда есть мои текущие настройки.
В идеале:
studog@doghouse:~# ssh example.local
common@example:~#
и .studog_profile
уже был получен, и мои настройки доступны.
Ограничения
- Мой
.studog_profile
содержит настройки переменных среды, включая изменения PATH, псевдонимы и объявления функций. - Я могу отправить файлы с уникальными именами на серверы (и изменить
.ssh/authorized_keys
), но не могу изменить общие конфигурации, такие как~/.bashrc
или/etc/ssh/sshd_config
. - Я часто ssh из моей конуры, но часто ssh между серверами. Решение должно работать в обеих ситуациях. Я не ожидаю, что смогу перенести свой пользовательский профиль между серверами.
Вещи, которые не работают
ssh -t example.local '. ./.studog_profile; bash -l'
. Это запускает мой профиль, но тогда изменения среды теряются при запуске оболочки входа.- Изменение
.bashrc
на серверах. Смотрите ограничение выше об изменении общих конфигураций. Тем не менее, мне, вероятно, это сойдет с рук, но ssh не дает возможности увидеть, что такое «начало канала ssh».SSH_CLIENT
иSSH_CONNECTION
содержат IP-адрес исходного сервера для текущего прыжка, но нет ничего, содержащего идентификатор машины, на которой я печатаю.
Вопросы, которые я прочитал, которые не работают для меня
- Запустите ssh и немедленно выполните команду - переполнение стека
Как запустить команду после подключения по ssh? - Супер пользователь
Они используютbash -l
который теряет изменения. - Могу ли я где-нибудь ssh, выполнить несколько команд, а затем оставить себе подсказку? - Переполнение стека
Верхний ответ показывает, как вводить переменные среды, но не псевдонимы или функции. Также мой профиль довольно большой, и это выглядит громоздко. - Как я могу запустить скрипт сразу после подключения через SSH? - Unix & Linux Stack Exchange
Изменяет общую конфигурацию, с которой я мог бы обойтись, но работает только для ситуаций «от собачьей будки», а не «между серверами».
Вещи, которые я не пробовал
- SSH, выполнить команду при входе в систему, а затем оставаться в системе? - Ошибка сервера
Ожидаемый сценарий часто упоминается. Я верю, что это сработает. Это только кажется ... хаки? безвкусный? неправильное решение? Что-то натирает меня неправильно.
ожидание
У ssh есть какой-то метод отправки команды post-login на удаленный сервер, вероятно, это ключевое слово в ~/.ssh/config
. Я не смог ничего найти. Я нахожу это странным, потому что принимать ввод с клавиатуры и отправлять его на удаленный сервер - это почти то же самое, что читать команду из файла конфигурации и отправлять ее на удаленный сервер.
Я должен думать, что этого не хватает, потому что это дыра в безопасности, но я не вижу, что это за дыра.
Я ожидаю, что смогу изменить исходный код OpenSSH и собрать то, что мне нужно, но это отнимает много времени. Кроме того, если это дыра в безопасности, мой запрос на удаление, скорее всего, будет проигнорирован.
Я ожидаю, что я охватил все основы. Я пишу в надежде, что что-то пропустил.