Como escrevo um script para SSH para um computador de um computador remoto?
-
05-07-2019 - |
Pergunta
Frequentemente, preciso SSH em um servidor, mas não consigo o SSH diretamente enquanto estou conectado à nossa VPN. Assim, eu tenho que ssh em outro servidor e ssh nele a partir daí. Existe alguma maneira de escrever uma função de script e/ou shell para isso? Eu tentei isso, mas me deu um erro:
% ssh jason@server2 'ssh jason@server1'
jason@server2's password:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
(e, claro, o nome de usuário e o nome do servidor foram alterados)
Solução
O empilhamento de conexão SSH pode ajudá -lo. Assumindo o seguinte layout: Client -> Middleman -> Destino
No cliente:
ssh user@Middleman -L 1337:Destination:22
Isso permitirá que você diretamente ssh no destino do cliente em outra sessão:
No cliente:
ssh user@localhost -p 1337
O comando corre como se você tivesse digitado usuário ssh@destino. Você pode colocar o stdin como se estivesse diretamente conectado a ele.
Outras dicas
Não pode mostrar o seu prompt de senha. Eu acho que tudo funcionará com chaves públicas (e, por exemplo, encaminhou o SSH-Agent para eliminar a necessidade de inserir as principais frases).
Parece que você deseja configurar a autenticação de chave pública entre a máquina do meio e as máquinas finais.
Aqui estão alguns guias decentes para você começar. Boa sorte.
http://hkn.eecs.berkeley.edu/~dhsu/ssh_public_key_howto.html
Pelo que vejo, o problema é SSH na máquina do meio, não pode obter a entrada padrão. Eu acho que só quero pedir sua senha. Se isso for verdade, talvez você deva tentar configurar a tecla SSH para poder SSH sem senha. Nota: Se esse sucesso, é melhor criar um novo usuário na máquina do meio para manter essa chave como medida de segurança.