Есть ли способ указать, например .ssh/config
, такую команду:
ssh -t remote-host "screen -dR screen_name"
чтобы я мог легко получить доступ к удаленному screen
сеансу ssh remote-host
?
Прямо сейчас я решил эту проблему, используя собственный скрипт:
$ cat ~/bin/sssh
#!/bin/sh
/usr/bin/ssh -t $1 "screen -dR ab"
~/bin
остается на первом месте $PATH
, но это негибко и некрасиво.
Также я хотел бы найти способ реализовать автодополнение хоста для моего собственного скрипта.
$1
на$@
. Затем вы можете добавить больше опций, а не только имя хоста. Для завершения попробуйте выполнить. /usr/share/bash-completion/completions/ssh
, а затемcomplete -F _ssh sssh
Ответы:
Чтобы распределить tty, как вы сделали бы с
-t
опцией, поместитеRequestTTY force
в качестве записи в файл конфигурации ssh (обычно в~/.ssh/config
). Чтобы всегда выполнять команду на сервере после того, как вы подключились, укажитеRemoteCommand COMMAND
в поле, гдеCOMMAND
находится команда, которую вы хотели бы выполнить при подключении. Для других вариантов, проверьтеman ssh_config
.источник
Используй силу, Люк!
RequestTTY force
в вашем~/.ssh/config
для желаемого хозяина.источник
Я бы сказал, что это самый гибкий способ. Скрипт позволяет устанавливать параметры, добавлять условия, изменять команду по мере необходимости, все на основе входных данных.
Есть способы «заставить» команду войти
authorized_keys
. Но я не знаю способа принудительного распределения tty, кроме как из командной строки или для принудительной команды на удаленном сервере из локальных конфигурационных файлов.У меня есть скрипт, который сканирует файл конфигурации, проверяет DNS на разные домены и устанавливает строку заголовка эмулятора терминала. Я звоню с экрана в моей локальной системе ( Ctrl-a g).
источник
Примечание:
RemoteCommand
начинает работать с OpenSSH 7.6 . В более ранней версии (т.е. в текущем Debian 9.9) клиент ssh перестанет работать должным образом (по крайней мере, сgit pull
).источник