Serahkan kepada klien SSH Go sambungan yang dibuka SOCKS
Dail destinasi SSH dengan x/net/proxy, kemudian mulakan x/crypto/ssh pada net.Conn yang terhasil.
Dialer SOCKS menyediakan pengangkutan; pakej SSH melakukan jabat tangan SSH di atasnya. Memanggil ssh.Dial selepas itu akan mencipta sambungan berasingan dan bukan menggunakan pengangkutan itu.
Fungsi pembantu dalam aplikasi yang sudah menggunakan x/net/proxy dan x/crypto/ssh boleh memulangkan klien SSH yang dikonfigurasikan:
func dialSSHViaSOCKS(proxyAddr, sshAddr string,
config *ssh.ClientConfig) (*ssh.Client, error) {
dialer, err := proxy.SOCKS5("tcp", proxyAddr, nil, proxy.Direct)
if err != nil {
return nil, err
}
conn, err := dialer.Dial("tcp", sshAddr)
if err != nil {
return nil, err
}
transport, channels, requests, err :=
ssh.NewClientConn(conn, sshAddr, config)
if err != nil {
conn.Close()
return nil, err
}
return ssh.NewClient(transport, channels, requests), nil
}Nama pakej di sini ialah golang.org/x/net/proxy dan golang.org/x/crypto/ssh. proxyAddr mengenal pasti pendengar SOCKS; sshAddr mengenal pasti pelayan akhir sebagai host:port.
Berikan dalam config pengguna SSH biasa aplikasi, kaedah pengesahan dan HostKeyCallback. Pakej knownhosts boleh membina callback itu daripada fail known_hosts yang dipercayai. Hantarkan nama hos destinasi ke NewClientConn supaya pemadanan kunci hos menggunakan identiti SSH yang dimaksudkan.
Argumen nil tidak memilih sebarang kelayakan SOCKS. Untuk destinasi SSH awam yang dibenarkan, entri tanpa akaun daripada senarai proksi SOCKS5 boleh menyediakan proxyAddr jika ia membenarkan hos dan port SSH sebenar. Jika perlu, hantarkan proxy.Auth yang mengandungi akaun proksi; pengesahan SSH kekal dalam config.
NewClient menerima aliran saluran dan permintaan masuk yang dipulangkan oleh NewClientConn dan mengendalikan mekanisme klien itu. Tutup klien SSH yang dipulangkan apabila kerjanya tamat. Pengendalian sambungan dalam pengeluaran juga memerlukan dail terbatas dan dasar jabat tangan; fungsi pembantu ini hanya menggambarkan penyerahan pengangkutan.