force ssh изменить каталог после входа в систему на основе конфигурации

Есть ли способ заставить ssh изменить его рабочий ~/.ssh/config в ~/.ssh/config или с помощью других файлов конфигурации?

У меня много серверов с разными средами. Каждая среда устанавливается в определенном каталоге, и было бы очень полезно находиться в этом конкретном каталоге сразу после входа в систему.

К сожалению, иногда на одном сервере могут размещаться несколько сред.

Вот почему мне нужно настроить его на основе конфигурации, так как в настоящее время у меня есть отдельная запись в config для каждого env. Пример:

 Host env1 User me Port 2222 # here directory should be /srv/project/env1 HostName 172.16.16.2 Host env2_test User me Port 2222 # here directory should be /srv/project/env2_test HostName 172.16.16.2 Host env54 User me Port 2225 # here directory should be /srv/project/env54 HostName 172.16.16.3 

Я могу сделать это с помощью ssh -t env54 'cd /srv/project/env54 ; bash' ssh -t env54 'cd /srv/project/env54 ; bash' , но это раздражает повторять его каждый раз или даже помещать в alias .

Я считаю, что * nix способ – обрабатывать его через конфигурацию.

3 Solutions collect form web for “force ssh изменить каталог после входа в систему на основе конфигурации”

На сервере, в .profile или независимо от того, что выполняется при входе в систему:

 if [ -n "$USE_DIR_A" ]; then cd dir_a elif [ -n "$USE_DIR_B" ]; then cd dir_b fi 

Затем на локальной машине задайте обе переменные:

 export USE_DIR_A=yes export USE_DIR_B=yes 

и, установите ваш .ssh/config следующим образом:

 Host env1 User me Port 2222 # here directory should be /srv/project/env1 SendEnv USE_DIR_A HostName 172.16.16.2 Host env2_test User me Port 2222 # here directory should be /srv/project/env2_test SendEnv USE_DIR_B HostName 172.16.16.2 

Конечно, у вас может быть только одна конфигурация ssh, которая отправляет одну переменную, и установите эту переменную в каталог, который вы хотите для каждой машины, но это не то, о чем вы просили.

Остерегайтесь совместного использования SSH: это может повлиять на то, какие сценарии запускаются при запуске в последующих подключениях.

Вы можете использовать флаг command=cd /srv/project/env1 && bash в файле удаленного сервера ~/.ssh/authorized_key для соответствующего открытого ключа для исходного сервера. Для получения дополнительной информации вы можете проверить этот вопрос на serverfault и получить дополнительную информацию о полезных параметрах, таких как команда в открытом ключе в файле authorized_keys, проверить этот блог .

Я попробовал это на своем тестовом компьютере (Centos 6.5 на Virtualbox), и он отлично работает.

 [root@CentOS-VM1 ~]# ssh nischay@localhost [nischay@CentOS-VM1 demo]$ pwd /tmp/demo 

Содержимое ~/.ssh/authorized_keys

 command="cd /tmp/demo && bash" ssh-dss AAAAB3NzaC1kc3MAAACBAOEKjYcSts6XZEtdzlYCAArgijN2yzi1RwlhOf7E2LHPqUI6z+od9Ye/E5e0imaJhyGvfb21b6o3U6PzWrwVIGZn9TA2/iiaaQS2R2w60/R07FY1tmas8y6TTmfelir/ZfAQnq4OT1KEf5SsYk4TIaC1h5gIL3wGhZyh54dsL1w1AAAAFQCj22qNcmQPToLi/P7sXH3SplxK8QAAAIEAsbiS8hQMjE0HkdCL0sT8/GFBJIo8EuNQh4AEjRv/5DU8Vk5i1CV7qO//spp8h/l5cDBWEC30VBWYk9jbN647VQonn24oXz3aXyQCsPYuqCDGl1MqhUdbHunXk9+YSU7Z13xc66LOD+oURJxFGTzndG5TnvPwhbSZsxebWMPlciYAAACAAe/gdrLn4Zkdp72Oa4JYKbaVD0rhW/p5eg+lSX8cm1m6nbYvGzcfaKF3cKTggGJH37IrDpMnAmuxzFJOryefDeUqGd/HmUOVN8PFnIJpSDQ1StOFx+0WwpiOHLXF4aaOpE/3SLrweuxywWDv4wymp0rXoSzL4mtNtB+u3pEOTgU= root@CentOS-VM1 

Другие параметры, такие как номер порта, псевдоним для имени хоста, имя пользователя, закрытый ключ и параметры переадресации портов, можно указать в файле ~/.ssh/config в исходном поле.

Я предполагаю, что правильно понял ваш вопрос и что у вас разные порты SSH для разных сред. Если так:-

Добавьте следующий вариант в свой .bash_profile на каждом удаленном компьютере: –

 if [[ ! -z $SSH_CLIENT ]]; then PORT=$(echo "$SSH_CLIENT" | awk '{print $3}') case $PORT in 2222) cd /srv/project/env1 ;; 2225) cd /srv/project/env2 ;; esac if 
  • Какая правильная форма ключевого слова SSH HostnameSuffixes?
  • Использование ssh -t работает, но с использованием ProxyCommand ssh -W не
  • Не удается подключиться через sshfs, потому что неправильная конфигурация в файле ~ / .ssh / config
  • ssh изменить пользователя для одного хоста
  • Удаленная команда в файле конфигурации ssh
  • Конфигурация ssh от Ubuntu 12.04 не работает 14.04.4
  • Использование SSH для подключения к новому серверу без сохранения ключей хоста в файле $ HOME / .ssh / known_host
  • Поместите `ForceCommand` в пользовательский файл конфигурации
  • Почему ssh-copy-id требует подробного LogLevel для работы в этом случае?
  • Исправьте настройки файла ssh для туннеля на третий компьютер
  • ssh не распознает имя хоста, указанное в конфигурационном файле
  • Linux и Unix - лучшая ОС в мире.