Usar ProxyCommand
Veja man ssh_config
. Eu recomendo fazer uso ProxyCommand
. Vamos pegar o seu cenário original:
- Computador A (seu computador)
- Computador B (um nome de host proxy)
- Computador C (apenas acessível via SSH a partir 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 de forma transparente o Computador C.
ssh computerc
Vantagens deste método
Mais seguro
Você só precisa que sua chave privada esteja no Computador A (seu computador). O nc
comando atuará como um proxy no qual o SSH criptografará o tráfego. Isso inclui autenticação. É uma péssima idéia distribuir sua chave privada para vários servidores (como qualquer servidor comprometido com sua chave privada acaba comprometendo 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. Também serve como um alias.
ssh 192.168.35.27
No exemplo acima, ele fará proxy através do Computador B para acessar o endereço IP.
Proxies da cadeia da 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ó pode ser acessado pelo Computador C e funcionará de forma transparente.
Host computerd
ProxyCommand ssh computerc nc -w 180 %h %p
ssh computerd
proxy automaticamente através do Computador C e Computador B nos ssh_config
exemplos acima .