هغه اړیکه چې SOCKS پرانیستې ده Go SSH کلاینټ ته وسپاره
د x/net/proxy په مرسته SSH منزل ته ډایل وکړئ، بیا پر رامنځته شوي net.Conn باندې x/crypto/ssh پیل کړئ.
SOCKS ډایلر ترانسپورت برابروي؛ SSH پیکج پر هغه باندې SSH لاس ورکول ترسره کوي. وروسته ssh.Dial غوښتل به د هغه ترانسپورت له کارولو پرته جلا اړیکه جوړه کړي.
په هغه اپلیکیشن کې چې دمخه x/net/proxy او x/crypto/ssh کاروي، یو مرستندویه فنکشن کولای شي تنظیم شوی SSH کلاینټ بیرته راولي:
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
}دلته د پیکجونو نومونه golang.org/x/net/proxy او golang.org/x/crypto/ssh دي. proxyAddr د SOCKS اورېدونکی په ګوته کوي؛ sshAddr وروستی سرور د host:port په بڼه په ګوته کوي.
په config کې د اپلیکیشن عادي SSH کاروونکی، د تصدیق کولو میتودونه او HostKeyCallback ورکړئ. د knownhosts پیکج کولای شي هغه callback له باوري known_hosts فایل څخه جوړ کړي. د منزل هوسټ نوم NewClientConn ته ورکړئ ترڅو د هوسټ کیلي سمون نظر لرونکې SSH هویت وکاروي.
nil استدلال هېڅ SOCKS اعتبار نه ټاکي. د اجازه ورکړل شوو عامه SSH منزلو لپاره د SOCKS5 پراکسي لیست یو بېحسابه ننوتنه کولای شي proxyAddr برابره کړي، که چېرې هغه ریښتینی SSH هوسټ او پورټ اجازه ورکړي. کله چې اړتیا وي، د پراکسي حساب لرونکی proxy.Auth ورکړئ؛ SSH تصدیق په config کې پاتې کیږي.
NewClient هغه راتلونکي چینل او غوښتنې جریان چې NewClientConn بیرته راولي ترلاسه کوي او هغه کلاینټ میکانیزم مدیریت کوي. کله چې کار پای ته ورسېد، راستنېدونکی SSH کلاینټ بند کړئ. په تولید کې د اړیکو مدیریت محدود ډایل او د لاس ورکولو تګلارې ته هم اړتیا لري؛ دا مرستندویه فنکشن یوازې د ترانسپورت سپارل ښيي.