Ho un server e un computer remoto. Ora voglio accedere al computer remoto tramite SSH, ma è possibile che sia dietro un NAT. Questa è una delle ragioni per cui voglio una connessione SSH inversa.SSH inverso con golang
L'idea è stabilire una connessione dal computer remoto al server e utilizzare questa connessione per comunicare tramite SSH dal server al computer remoto.
Con OpenSSH questo è abbastanza facile. Dal computer remoto apro il tunnel SSH inverso:
ssh- R 19999:localhost:22 [email protected]
ora posso usare questo dal lato server con:
ssh localhost -p 19999
voglio ottenere lo stesso comportamento con un'applicazione andare e in movimento Libreria SSH sul computer remoto. Il server continuerà a utilizzare OpenSSH quindi non dovrebbe essere modificato.
So come connettersi a un computer tramite SSH da go ma come si può ottenere la parte inversa?
func main() {
config := &ssh.ClientConfig{
User: "vagrant",
Auth: []ssh.AuthMethod{
ssh.Password("vagrant"),
},
}
conn, err := ssh.Dial("tcp", "192.168.0.10:22", config)
if err != nil {
panic("Failed to dial: " + err.Error())
}
}
Ehi, ho provato il tuo server_complex.go, non funziona, ho ricevuto l'errore: 2016/11/21 16:56:04 nuova connessione ssh da 193.40.242.84:53374 (SSH-2.0-Go) 2016/11/21 16:56:04 ha ricevuto la richiesta fuori banda: & {Tipo: tcpip-forward WantReply: true Payload: [0 0 0 7 48 46 48 46 48 46 48 0 0 85 241] ch: mux : 0x105675c0} –
Anton