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

SSH - запустите команду, затем дайте мне оболочку

Этот вопрос напомнил мне одну из моих собственных. Я хочу создать псевдоним, который будет ssh к машине, запускает команду (в данном случае cd по указанному пути), а затем дает мне оболочку. Я пробовал сотню вариантов этого:

$ ssh user@machine 'cd /some/path/ && bash -i -l'

что примерно лучшее, что я могу сделать. Это дает мне приглашение bash в нужном каталоге, но без управления заданиями и без возможности использовать клавиши со стрелками (и некоторые другие сочетания клавиш). Есть простой способ сделать это?

Я не могу сделать это легко в конце моего bashrc или профиля, потому что путь, по которому я хочу перейти, будет варьироваться (я передам его в качестве аргумента псевдониму), а иногда я даже могу использовать ssh на этой машине не желая вообще никуда идти - домашний каталог в порядке.

Попробуйте дать ssh -t возможность выделить терминал.

Посмотрите справочную страницу sshd, раздел Формат файла Authorized_keys. Внутри него есть опция command = "command", которая указывает, что делать, когда этот ключ подключается. Исходная включенная команда для подключения включается в переменную.

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

Это будет иначе, потому что cd не команда, а скорее встроенная оболочка, которая изменяет текущий рабочий каталог программы.

Боюсь, я так и не нашел хорошего способа сделать это - но, возможно, это поможет прояснить некоторую путаницу.

Я думаю, лучшее место для твоего cd /some/path/ в твоем .bashrc на удаленной машине.