Rhowch i gleient SSH Go y cysylltiad a agorwyd gan SOCKS
Deialwch y cyrchfan SSH gyda x/net/proxy, yna cychwynnwch x/crypto/ssh ar y net.Conn sy'n deillio.
Mae'r dialer SOCKS yn darparu'r trafnidiaeth; mae'r pecyn SSH yn gwneud yr ysgwyd llaw SSH drosti. Byddai galw ssh.Dial wedyn yn creu cysylltiad ar wahân yn lle defnyddio'r drafnidiaeth honno.
Gall ffwythiant cynorthwyol mewn rhaglen sy'n defnyddio x/net/proxy ac x/crypto/ssh yn barod ddychwelyd y cleient SSH wedi'i ffurfweddu:
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
}Yr enwau pecyn yma yw golang.org/x/net/proxy a golang.org/x/crypto/ssh. Mae proxyAddr yn nodi'r gwrandäwr SOCKS; mae sshAddr yn nodi'r gweinydd terfynol fel host:port.
Darparwch yn config arferol defnyddiwr SSH y rhaglen, y dulliau dilysu a HostKeyCallback. Gall y pecyn knownhosts adeiladu'r callback hwnnw o ffeil known_hosts ddibynadwy. Trosglwyddwch enw gwesteiwr y gyrchfan i NewClientConn fel bod paru allwedd y gwesteiwr yn defnyddio'r hunaniaeth SSH a fwriadwyd.
Nid yw'r ddadl nil yn dewis unrhyw gredydau SOCKS. Ar gyfer cyrchfannau SSH cyhoeddus a ganiateir, gall cofnod heb gyfrif o'r rhestr dirprwyon SOCKS5 ddarparu proxyAddr os yw'n caniatáu gwesteiwr a phorth SSH gwirioneddol. Pan fo angen, trosglwyddwch proxy.Auth sy'n cynnwys cyfrif y dirprwy; mae dilysu SSH yn aros yn config.
Mae NewClient yn derbyn y ffrydiau sianel a chais sy'n dod i mewn a ddychwelwyd gan NewClientConn ac yn trin y peirianwaith cleient hwnnw. Caewch y cleient SSH a ddychwelwyd pan ddaw ei waith i ben. Mae trin cysylltiadau mewn cynhyrchiad hefyd angen deialu cyfyngedig a pholisi ysgwyd llaw; dim ond trosglwyddo'r drafnidiaeth y mae'r ffwythiant cynorthwyol hwn yn ei ddangos.