גיט דעם SSH קליענט פון Go די פֿאַרבינדונג וואָס SOCKS האָט געעפֿנט
רופֿט אָן דעם SSH ציל מיט x/net/proxy, דערנאָך איניציאַליזירט x/crypto/ssh אויפֿן net.Conn וואָס קומט אַרויס.
דער 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 קליענט ווען זײַן אַרבעט ענדיקט זיך. פֿאַרבינדונג באַהאַנדלונג אין פּראָדוקציע דאַרף אויך באַגרענעצט אָנרופֿן און אַ האַנטדרוק פּאָליטיק; די הילפּפֿונקציע ווײַזט נאָר דעם איבערגאַנג פֿונעם טראַנספּאָרט.