Ba wa SSH abokin ciniki na Go haɗin da SOCKS ya buɗe
Yi dial ɗin manufar SSH da x/net/proxy, sannan fara x/crypto/ssh a kan net.Conn ɗin da ya fito.
Mai dial ɗin SOCKS yana samar da jigilar; fakitin SSH yana yin musafaha na SSH a kansa. Kira ssh.Dial daga baya zai ƙirƙiri dabam haɗi maimakon amfani da wannan jigilar.
Wani aiki mai taimako a cikin manhaja da ke amfani da x/net/proxy da x/crypto/ssh tuni na iya mayar da SSH abokin ciniki da aka saita:
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
}Sunayen fakiti a nan su ne golang.org/x/net/proxy da golang.org/x/crypto/ssh. proxyAddr yana nuna mai sauraren SOCKS; sshAddr yana nuna uwar garken ƙarshe a matsayin host:port.
Bayar a cikin config da SSH mai amfani na yau da kullum na manhajar, hanyoyin tabbatarwa da HostKeyCallback. Fakitin knownhosts na iya gina wannan callback daga fayil ɗin known_hosts abin dogaro. Miko sunan uwar garke na manufa cikin NewClientConn domin daidaita maɓallin uwar garke ya yi amfani da asalin SSH da ake nufi.
Hujjar nil ba ta zaɓar wani bayanan SOCKS. Don manufofin SSH na jama'a da aka yarda, shigarwa marar asusu daga jerin wakilan SOCKS5 na iya samar da proxyAddr idan ta yarda da ainihin uwar garke da tashar SSH. Idan ana buƙata, miko proxy.Auth mai ɗauke da asusun wakili; tabbatarwar SSH tana zama a cikin config.
NewClient yana karɓar kwararar tashoshi da buƙatun shigowa da NewClientConn ya mayar kuma yana kula da wannan injin na abokin ciniki. Rufe SSH abokin ciniki da aka mayar idan aikinsa ya ƙare. Kula da haɗi a samarwa kuma yana buƙatar takaitaccen dial da manufar musafaha; wannan aikin taimako yana nuna miƙa jigilar kawai.