Назад | Перейти на главную страницу

Есть ли способ передать информацию о конфигурации оболочки при подключении к хосту по SSH?

я получил куча хороших вещей в моей конфигурации bash. Обычно, когда я получаю новую учетную запись, я снимаю ее с мое репозиторий GitHub так что у меня есть все псевдонимы и функции, к которым я привык. Есть несколько хостов, к которым я обращаюсь, на которых у меня нет собственных учетных записей, но есть общие учетные записи, которые использует множество людей, поэтому было бы грубо с моей стороны установить конфигурацию оболочки.

Есть ли способ передать мою конфигурацию оболочки или хотя бы некоторые команды инициализации через сеанс SSH, чтобы у меня была среда, к которой я привык?

Я люблю хранить файл .bsa в удобном месте (может быть ~ будет работать в этом случае) так что я могу просто . ~/.bsa получить мою среду.

Вставьте обязательное ворчание об общих учетных записях, но если у вас хотя бы есть собственный ключ ssh, вы можете (ab) использовать command= вариант в ~/.ssh/authorized_keys файл. Ключ с параметром команды подходит только для выполнения указанной команды; но команда в файле authorized_keys работает с переменной среды SSH_ORIGINAL_COMMAND установить на команду, указанную пользователем (пусто для интерактивных сеансов). Таким образом, вы можете использовать что-то подобное в ~/.ssh/authorized_keys:

command="HOME=$HOME/.HOME.drew;
         if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
           eval \"$SSH_ORIGINAL_COMMAND\";
         else exec \"$SHELL\"; fi" ssh-rsa AAAA…== drew@example.com

Обратите внимание, что я поместил разрывы строк выше для удобочитаемости, но на самом деле это должно быть все в одной строке в authorized_keys файл.

Затем поместите свои любимые файлы конфигурации в этот .HOME.drew каталог.

Для пунктуального использования вы можете явно указать файл профиля или запустить любую команду оболочки. Пройти -t возможность иметь терминал, если вы хотите запускать интерактивные команды.

ssh shared-account@server "LS_COLORS='$LS_COLORS' ls --color"
ssh -t shared-account@server '. ~/.profile.drew; exec zsh'

Если вы хотите только редактировать или копировать файлы на удаленном компьютере, вы можете использовать сетевую файловую систему, например SSHFS (для клиентов unix) или Бродяга (для Emacs) и работайте, не выходя из вашей локальной среды.

Может быть, попробовать что-нибудь взломать вместе с "LocalCommand" (см. Man ssh_config)?