Use ProxyCommand
Veja man ssh_config
. Eu recomendo fazer uso de ProxyCommand
. Vamos pegar seu cenário original:
- Computador A (seu computador)
- Computador B (um nome de host proxy)
- Computador C (acessível somente via SSH do Computador B)
Edite ~/.ssh/config
com o seguinte conteúdo.
Host computerb
HostName <hostname or IP of Computer B>
Host computerc 192.168.35.*
ProxyCommand ssh computerb nc -w 180 %h %p
Agora você poderá acessar o Computador C. de forma transparente, por exemplo
ssh computerc
Vantagens desse método
Mais seguro
Você só precisa da sua chave privada para estar no Computador A (seu computador). O comando nc
atuará como um proxy no qual o SSH criptografará o tráfego. Isso inclui autenticação. É uma péssima ideia distribuir sua chave privada para vários servidores (já que qualquer servidor comprometido com sua chave privada compromete sua chave privada).
Corresponde a vários destinos
Pode-se combinar vários computadores de destino usando Host
. Um único computador ou qualquer computador dentro de uma rede específica (por exemplo, 192.168.35.0/24
no exemplo acima) para proxy através do Computador B. Ele também serve como um alias.
ssh 192.168.35.27
No exemplo acima, ele passará pelo computador B para acessar o endereço IP.
proxies da cadeia de margarida
Usando esse método, você pode encadear quantos proxies automáticos forem necessários. por exemplo. você pode adicionar um Computador D que só é alcançável pelo Computador C e funcionará de forma transparente.
Host computerd
ProxyCommand ssh computerc nc -w 180 %h %p
ssh computerd
será procurado automaticamente pelo Computador C e Computador B nos exemplos acima de ssh_config
.