Estou tentando colocar meu comando multi-hop ssh no arquivo ssh .ssh / config.
Este é o meu gráfico de conexão: laptop (eu estou aqui) ------> userver -------> estação de trabalho
Eu coloquei as chaves ssh public rsa em 'userver' e 'workstation'. Neste momento, eu posso conectar digitando esta linha:
ssh -A -t userserver@userver ssh -A userworkstation@workstation
Gostaria, no entanto, de poder usar os recursos do arquivo de configuração em ~ / .ssh / config para alcançar o mesmo efeito, mas usando um comando simples, que também me permitiria fazer cópias rápidas com 'scp'. O único problema é que 'userver' não possui o comando "nc" e eu não tenho superusuário lá, apenas controle da minha pasta pessoal. No entanto, tentei algumas coisas:
Eu tenho este arquivo de configuração no meu laptop (~ / .ssh / config):
# laptop config file
Host userver
Hostname userver_hostname
port 22
User server_user
Também outro arquivo de configuração no userver (~ / .ssh / config)
# userver config file
Host workstation
Hostname workstation_hostname
port 22
user workstation_username
Com esses arquivos de configuração eu posso conectar como
ssh -A -t userver ssh -A workstation
o que é uma melhoria, mas não é suficiente. Tentei adicionar outro host na configuração dos meus laptops, assim:
Host hop
ProxyCommand ssh -A -t userver ssh -A workstation
Então, quando eu faço
ssh hop
Eu recebo a seguinte saída com erros e não consigo conectar:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: $'SSH-2.0-OpenSSH_6.4\r': command not found
Alguma ideia?
fonte
Eu achei a solução a seguir muito melhor do que usar netcat (
nc
) como no outro exemplo. Com o netcat, minha conexão era muito lenta e travava repetidamente até eu pressionar algumas teclas. Além disso, você não precisa ter o netcat instalado.Adicione o seguinte ao seu
~/.ssh/config
:Então você pode ssh assim:
Observe também que a razão pela qual você
ProxyCommand
não funciona é porque você não está recebendo o queProxyCommand
funciona.ProxyCommand
deve criar um canal sobre o qualssh
possa fazer uma conexão SSL. Em outras palavras, o comando deve iniciar um processo que stdin e stdout se conectemssh
a umasshd
porta. Na sua configuração, você está fazendo uma conexão ssh com aProxyCommand
qual se conectassh
ao shell de comando e não a umasshd
porta.fonte