.ssh / config maneira de especificar alocação pseudo-tty e execução de comandos

13

Existe alguma maneira de especificar, em .ssh/config, um comando como:

ssh -t remote-host "screen -dR screen_name"

para que eu possa acessar facilmente a screensessão remota com ssh remote-host?

No momento, resolvi esse problema usando um script personalizado:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/binpermanece em primeiro lugar $PATH, mas é inflexível e feio.

Também gostaria de encontrar uma maneira de implementar o preenchimento automático de host para o meu script personalizado.

AB
fonte
Eu substituiria $1por $@. Depois, você pode adicionar mais opções, não apenas o nome do host. Para concluir, tente executar . /usr/share/bash-completion/completions/ssh, seguido porcomplete -F _ssh sssh
Alex Stragies

Respostas:

17

Para alocar o tty como faria com a -topção, coloque RequestTTY forcecomo uma entrada no arquivo de configuração ssh (geralmente em ~/.ssh/config). Para sempre executar um comando no servidor após a conexão, insira RemoteCommand COMMANDa entrada, onde COMMANDestá o comando que você deseja executar na conexão. Para outras opções, marque man ssh_config.

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name
Brian Albert Monroe
fonte
7

Use a força, Luke!

RequestTTY forceno seu ~/.ssh/configpara o host desejado.

Veaceslav Mindru
fonte
1

Eu diria que essa é a maneira mais flexível. Um script permite configurar parâmetros, adicionar condicionais, alterar o comando conforme necessário, tudo com base nas entradas.

Existem maneiras de "forçar" o comando authorized_keys. Mas não sei como forçar a alocação de tty, exceto na linha de comando ou forçar um comando no servidor remoto a partir dos arquivos de configuração do lado local.

Eu mesmo, tenho um script que verifica o arquivo de configuração, verifica o DNS com vários domínios e define a string de título do emulador de terminal. Eu chamo de tela no meu sistema local ( Ctrl-a g).

Arcege
fonte
0

Nota: RemoteCommandcomeça a trabalhar com o OpenSSH 7.6 . Na versão anterior (ie atual debian 9.9) o cliente ssh irá parar de funcionar corretamente (pelo menos com git pull).

Mathissimo
fonte