Jepi klientit SSH të Go lidhjen që hapi SOCKS
Dialo destinacionin SSH me x/net/proxy, pastaj inicializo x/crypto/ssh mbi net.Conn që rezulton.
Dialeri SOCKS siguron transportin; paketa SSH kryen dorështrëngimin SSH mbi të. Thirrja e ssh.Dial më pas do të krijonte një lidhje të veçantë në vend që të përdorte atë transport.
Një funksion ndihmës në një aplikacion që tashmë përdor x/net/proxy dhe x/crypto/ssh mund të kthejë klientin SSH të konfiguruar:
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
}Emrat e paketave këtu janë golang.org/x/net/proxy dhe golang.org/x/crypto/ssh. proxyAddr identifikon dëgjuesin SOCKS; sshAddr identifikon serverin përfundimtar si host:port.
Jepni në config përdoruesin e zakonshëm SSH të aplikacionit, metodat e vërtetimit dhe HostKeyCallback. Paketa knownhosts mund ta ndërtojë atë callback nga një skedar known_hosts i besuar. Kaloni emrin e hostit të destinacionit në NewClientConn që përputhja e çelësit të hostit të përdorë identitetin e synuar SSH.
Argumenti nil nuk zgjedh kredenciale SOCKS. Për destinacione publike SSH të lejuara, një zë pa llogari nga lista e proxy-ve SOCKS5 mund të sigurojë proxyAddr nëse lejon hostin dhe portën reale SSH. Kur kërkohet, kaloni një proxy.Auth me llogarinë e proxy-t; vërtetimi SSH mbetet në config.
NewClient pranon rrjedhat hyrëse të kanaleve dhe kërkesave që kthen NewClientConn dhe trajton atë mekanizëm të klientit. Mbyllni klientin SSH të kthyer kur puna e tij mbaron. Trajtimi i lidhjeve në prodhim kërkon gjithashtu dialing të kufizuar dhe politikë dorështrëngimi; ky funksion ndihmës ilustron vetëm dorëzimin e transportit.