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


12

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

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

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

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


Я уточнил свой вопрос.
Казз

Там нет ничего об этом в 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"
}

1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.