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 screen
sessã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"
~/bin
permanece 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.
$1
por$@
. 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
Respostas:
Para alocar o tty como faria com a
-t
opção, coloqueRequestTTY force
como uma entrada no arquivo de configuração ssh (geralmente em~/.ssh/config
). Para sempre executar um comando no servidor após a conexão, insiraRemoteCommand COMMAND
a entrada, ondeCOMMAND
está o comando que você deseja executar na conexão. Para outras opções, marqueman ssh_config
.fonte
Use a força, Luke!
RequestTTY force
no seu~/.ssh/config
para o host desejado.fonte
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).
fonte
Nota:
RemoteCommand
começ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 comgit pull
).fonte