Удаленная команда в конфигурационном файле ssh

12

Я хотел бы установить ssh_config, чтобы после простого ввода ssh my_hostnameя оказался в определенной папке. Так же , как я напечатал бы cd /folder/another_one/much_much_deeper/.

Как я могу этого достичь?

РЕДАКТИРОВАТЬ. Он был помечен как дубликат «Как сделать ssh в dir ...», но это не мой вопрос.

Я знаю, что могу выполнить любые команды, привязав их к sshкоманде. Мой вопрос касается /ssh_configфайла, а не команды.

Kazz
источник
Я уточнил свой вопрос.
Казз
Там нет ничего об этом в man ssh_config. Ближайшим является LocalCommand, но его нельзя использовать для интерактивной команды.
lgeorget
1
Пожалуйста, не могли бы вы объяснить (в своем вопросе), почему вы чувствуете, что изменение должно быть сделано ssh_config? Вероятно, есть более подходящие места для настройки начального каталога, и было бы полезно понять, почему существует конкретное ограничение для возможного решения.
Ройма
1
Тот факт, что «это не может быть сделано в ssh_config», не делает это дубликатом «сделай это в Bash». «Вы не можете сделать это» - совершенно правильный ответ.
Франклин Ю
1
@terdon Однако факт "это невозможно" может со временем измениться. Да, это возможно сейчас. Теперь мне (как и всем будущим, кто увидит это) нужен новый ответ, и мы застряли здесь. Если это не будет вновь открыто, я представляю, что желаемым путем является создание нового вопроса (и ответ на него)?
Франклин Ю

Ответы:

19

Не было никакого способа сделать это, пока OpenSSH 7.6 . Из руководства :

RemoteCommand

Указывает команду для выполнения на удаленном компьютере после успешного подключения к серверу. Командная строка простирается до конца строки и выполняется с оболочкой пользователя. Аргументы для RemoteCommandпринятия токенов, описанных в разделе TOKENS .

Так что теперь вы можете иметь

RemoteCommand cd /tmp && bash

Это было введено в этом коммите .

Франклин Ю
источник
5
Добавьте, RequestTTY forceесли для удаленной команды требуется TTY. Например:tmux new -As my-session
Аарон Бленкуш
Это убийственный sshвариант Спасибо!
19
Это делает невозможным выполнение других команд, например, ssh my_hostname lsпроизойдет сбой с Cannot execute command-line and remote command.. Это приводит к тому, что другие инструменты, использующие ssh, такие как git и rsync, также перестают работать.
Ремрам
2

Я хотел бы установить ssh_config после простого ввода ssh my_hostname

Это невозможно. Нет возможности достичь этого в ssh_config. Наиболее близким к нему является создание псевдонима bash или функции bash, такой как

myssh() {
    ssh -t $1 "cd /dir/; bash"
}
Jakuje
источник
1

Я ответил на другой билет, прежде чем Somoene указал, что это был оригинал.

Если вы используете Mac, я рекомендую использовать iTerm2 и создать профиль. Введите ssh my_hostnameв командной строке, а затем добавьте команду cd /folder/another_one/much_much_deeper/в поле отправки текста при запуске. Когда вы подключаетесь к сеансам, он подключится к вашему имени хоста и перейдет в каталог в вашем случае, или выполнит команду.

Govna
источник