.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, но это негибко и некрасиво.

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


Я бы заменил $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


1

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

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

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


0

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

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