
Eu tenho vários hosts ssh (uma dúzia), para simplificar host1
, host2
etc.
Freqüentemente preciso encaminhar a porta, por exemplo
ssh -L 8888:localhost:8888 host1
ssh -L 8889:localhost:8888 host2
ssh -L 8890:localhost:80 host2
Isso é irritante porque 1) preciso me lembrar do mapeamento das portas locais para os hosts e 2) preciso fazer isso manualmente
Eu gostaria de implementar algum tipo de sistema que ouvisse hosts específicos (localmente, na minha máquina), por exemplo, host1.8888.ssh.local
e abrisse o túnel para esse endereço automaticamente.
Responder1
Você pode configurar tudo isso dentro do arquivo de configuração ssh, geralmente encontrado no local:$HOME/.ssh/config
por exemplo:
Host abc
Hostname 1.2.3.4
Port 345
IdentityFile /path/to/id_rsa
LocalForward 8888 localhost:8888
User root
Host def
Hostname 2.3.4.5
User root
LocalForward 8889 localhost:8889
Dessa forma, você só precisa digitar ssh abc
e todas as configurações especificadas ali serão aplicadas. Opções disponíveis encontradas dentro dopágina de manual.
Responder2
eu desenvolvisshtunnelesse é um serviço que estabelecerá túneis e os manterá funcionando.
server "srv_us"
HostName="srv.us"
User="root"
IdentityFile="/root/.ssh/id_ed25519"
tunnelR "srv_us_http"
servername="srv_us"
remoteaddress="1"
remoteport=80
localaddress="127.0.0.1"
localport=8080
Se você tiver um roteador OpenWrt, poderá usar um semelhantesshtunnelserviço. Recentemente foi adicionada uma GUI para configurá-lo luci-app-sshtunnel.
Responder3
Uma nota do futuro, que nada tem a ver com a pergunta feita, mas resolveu o problema subjacente.
Se você fizer coisas no código vs no servidor, depois de iniciar qualquer processo (por exemplo, jupyter, tensorboard, dashboards, servidores web), o código vs encaminha essas portas para a máquina local, então não há necessidade de memorizar nada, as portas são encaminhadas apenas do host com o qual você trabalha atualmente - e qualquer número de portas, e apenas portas usadas. Que conveniência!