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

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

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

localhost $ ssh machinelearning

Quando estou tentando acessar a máquina deforada minha rede, preciso me conectar ao meu roteador e, em seguida, usar o SSH a partir daí:

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

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

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

$ ssh machinelearning

O SSH primeiro tentará se conectar ao machinelearninghost na rede local e, em seguida, tentará fazer o túnel através de router.mytotallyuniquedomain.com, tudo sem que eu precise digitar o nome longo do host?

Responder1

Método #1 – ProxyCommand e netcat

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

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

Eu posso então ssh intserver2-ode qualquer lugar e entro neste servidor interno. Quando estou em casa na LAN que eu uso ssh intserver1.

OBSERVAÇÃO:O truque acima requer netcat( nc) instalado no extserver1.

Método #2 – ssh aninhado

Alternativamente, você também pode usar este método:

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

Você está basicamente aninhando chamadas SSH neste método.

Método #3 – ProxyCommand & ssh -W

Com versões mais recentes do SSH (5.4+), você pode usar sshem vez ncdo -Wswitch.

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

Os %h& %psão macros para a porta do nome do host que foram usadas para TARGETHOST.

informação relacionada