Execute um comando remoto usando o arquivo de configuração ssh
32
Eu gostaria de poder configurar um comando para executar no logon ssh em um servidor, sem precisar digitá-lo. Basicamente, estou procurando o arquivo de configuração ssh equivalente a:
Também é possível inserir um comando no seu arquivo de chaves autorizado. ( ~/.ssh/authorized_keys) Isso permite que você execute um comando personalizado para cada chave no arquivo. Eu uso isso para encaminhar conexões shell através do meu firewall. O resultado é que eu posso ssh para um host e ele conecta automaticamente a sessão a um host dentro da rede. A authorized_keysentrada fica assim:
command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...
Mais especificamente, o redirecionamento é para minha instância de gitolite. Isso permite acesso externo simples, sem expor diretamente o host gitolite a qualquer acesso externo. Verifique a página do manual para mais informações. ( http://linux.die.net/man/8/sshd )
Isso é incrível, não sabia que você poderia fazer isso. +1
Brian Wigginton 24/09
3
Se você colocar o comando no seu arquivo allowed_keys, ele quebrará coisas como rsync e scp - você terá algo parecido com isto: abrir terminal falhou: não um terminal. Além disso, esteja ciente de que, se o comando falhar, você não poderá fazer login. Eu descobri isso da maneira mais difícil.
John Hunt
11
Se você estiver executando o OpenSSH, parece que ele ~/.ssh/rcé executado após o login .
Se você estiver executando o OpenSSH, parece que ele
~/.ssh/rc
é executado após o login .fonte
/.ssh/rc
localizado na máquina cliente ou servidor? Parece com os documentos do servidor, certo?rc
arquivo parece não conseguir executar coisas comoscreen
, recebendo um erro "Deve ser conectado a um terminal"Você pode configurar um alias do bash.
No seu arquivo .bashrc, coloque:
Então você nem precisaria digitar o nome do host.
Ou, se você quiser fazer isso com vários hosts (e vários aliases não funcionarem), use um pequeno script:
fonte
Você resolve isso a frio
.ssh/config file
, para o host em que deseja executar um comando, adicioneonde
<some command>
está seu comando Isso também funciona com screen ou tmux.fonte