É possível ter vários aliases de host SSH? [duplicado]

5

Eu tenho um laptop que obviamente pode estar dentro ou fora da minha rede doméstica às vezes. Quando eu preciso de SSH em uma máquina dentro da minha rede, a conexão é bastante direta:

localhost $ ssh machinelearning

Quando estou tentando acessar a máquina a partir de fora da minha rede, preciso conectar-me ao meu roteador e, em seguida, ao SSH:

localhost $ ssh router.mytotallyuniquedomain.com
router $ ssh machinelearning

Lembro-me de haver um atalho para fazer o último comando em ~/.ssh/config , mas no momento não consigo lembrar o que é.

Existe uma maneira de eu fornecer vários nomes de host ou tipos de conexões para que, quando eu fizer isso:

$ ssh machinelearning

O SSH tentará primeiro conectar-se ao host machinelearning na rede local e tentar encapsular através de router.mytotallyuniquedomain.com , tudo sem que eu precise digitar o nome do host longo?

    
por Naftuli Kay 28.03.2014 / 20:59

1 resposta

4

Método 1 - ProxyCommand & netcat

Eu uso essa configuração no meu $HOME/.ssh/config para facilitar isso:

Host intserver1-o intserver2-o intserver3-o
    ProxyCommand ssh [email protected] nc 'echo %h|sed 's/-o//'' %p

Eu, então, posso ssh intserver2-o de onde e eu entro neste servidor interno. Quando em casa na LAN eu uso ssh intserver1 .

NOTA: O truque acima requer o netcat ( nc ) instalado no extserver1.

Método # 2 - ssh aninhado

Como alternativa, você também pode usar esse método:

$ ssh -t -l gatewayuser gatewayserver "ssh -l serveruser internalserver"

Você basicamente aninha chamadas SSH nesse método.

Método 3 - ProxyCommand & ssh -W

Com versões mais recentes do SSH (5.4+), você pode usar ssh em vez de nc por meio da opção -W .

Host TARGETHOST
ProxyCommand ssh -W %h:%p PROXYHOST

O %h & %p são macros para a porta do nome do host que foi usada para TARGETHOST .

    
por 28.03.2014 / 21:42

Tags