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 კლიენტი, როცა სამუშაო დასრულდება. წარმოებაში კავშირების დამუშავებას ასევე სჭირდება შეზღუდული დიალინგი და ხელის ჩამორთმევის პოლიტიკა; ეს დამხმარე ფუნქცია მხოლოდ ტრანსპორტის გადაცემას აჩვენებს.

დაკავშირებული სტატიები