.ssh / config способ указать псевдо-tty распределение и выполнение команды

13

Есть ли способ указать, например .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, но это негибко и некрасиво.

Также я хотел бы найти способ реализовать автодополнение хоста для моего собственного скрипта.

AB
источник
Я бы заменил $1на $@. Затем вы можете добавить больше опций, а не только имя хоста. Для завершения попробуйте выполнить . /usr/share/bash-completion/completions/ssh, а затемcomplete -F _ssh sssh
Alex Stragies

Ответы:

17

Чтобы распределить tty, как вы сделали бы с -tопцией, поместите RequestTTY forceв качестве записи в файл конфигурации ssh (обычно в ~/.ssh/config). Чтобы всегда выполнять команду на сервере после того, как вы подключились, укажите RemoteCommand COMMANDв поле, где COMMANDнаходится команда, которую вы хотели бы выполнить при подключении. Для других вариантов, проверьте man ssh_config.

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name
Брайан Альберт Монро
источник
7

Используй силу, Люк!

RequestTTY forceв вашем ~/.ssh/configдля желаемого хозяина.

Вячеслав Миндру
источник
1

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

Есть способы «заставить» команду войти authorized_keys. Но я не знаю способа принудительного распределения tty, кроме как из командной строки или для принудительной команды на удаленном сервере из локальных конфигурационных файлов.

У меня есть скрипт, который сканирует файл конфигурации, проверяет DNS на разные домены и устанавливает строку заголовка эмулятора терминала. Я звоню с экрана в моей локальной системе ( Ctrl-a g).

Arcege
источник
0

Примечание: RemoteCommandначинает работать с OpenSSH 7.6 . В более ранней версии (т.е. в текущем Debian 9.9) клиент ssh перестанет работать должным образом (по крайней мере, с git pull).

Mathissimo
источник