SOCKS dialer သည် သယ်ယူပို့ဆောင်မှုကို ပေးသည်; SSH package သည် ၎င်းအပေါ်တွင် SSH လက်ဆွဲနှုတ်ဆက်မှုကို လုပ်ဆောင်သည်။ နောက်မှ ssh.Dial ကို ခေါ်ပါက ထို သယ်ယူပို့ဆောင်မှုကို အသုံးမပြုဘဲ သီးခြား ချိတ်ဆက်မှု ဖန်တီးမည်။

x/net/proxy နှင့် x/crypto/ssh ကို အသုံးပြုပြီးဖြစ်သော အက်ပ်ရှိ အထောက်အကူ function သည် ပြင်ဆင်ထားသော SSH client ကို ပြန်ပေးနိုင်သည်:

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
}

ဤနေရာတွင် package အမည်များမှာ golang.org/x/net/proxy နှင့် golang.org/x/crypto/ssh ဖြစ်သည်။ proxyAddr သည် SOCKS နားထောင်သူကို ဖော်ပြသည်; sshAddr သည် နောက်ဆုံး server ကို host:port အဖြစ် ဖော်ပြသည်။

config တွင် အက်ပ၏ ပုံမှန် SSH အသုံးပြုသူ၊ စစ်ဆေးအတည်ပြုနည်းလမ်းများနှင့် HostKeyCallback ကို ပေးပါ။ knownhosts package သည် ယုံကြည်ရသော known_hosts ဖိုင်မှ ထို callback ကို တည်ဆောက်နိုင်သည်။ host key ကိုက်ညီမှုသည် ရည်ရွယ်ထားသော SSH အထောက်အထားကို အသုံးပြုရန် ဦးတည်ရာ hostname ကို NewClientConn သို့ ပေးပို့ပါ။

nil argument သည် SOCKS အထောက်အထား မရွေးချယ်ပါ။ ခွင့်ပြုထားသော အများသူငှာ SSH ဦးတည်ရာများအတွက် SOCKS5 proxy စာရင်းမှ အကောင့်မလိုသော entry သည် အမှန်တကယ် SSH host နှင့် port ကို ခွင့်ပြုပါက proxyAddr ကို ပေးနိုင်သည်။ လိုအပ်ပါက proxy အကောင့်ပါသော proxy.Auth ကို ပေးပါ; SSH စစ်ဆေးအတည်ပြုမှုသည် config တွင် ဆက်ရှိသည်။

NewClient သည် NewClientConn ပြန်ပေးသော အဝင် channel နှင့် request stream များကို လက်ခံပြီး ထို client ယန္တရားကို ကိုင်တွယ်သည်။ အလုပ်ပြီးဆုံးသောအခါ ပြန်ရသော SSH client ကို ပိတ်ပါ။ ထုတ်လုပ်မှုတွင် ချိတ်ဆက်မှု ကိုင်တွယ်ရန် ကန့်သတ်ထားသော dialing နှင့် လက်ဆွဲနှုတ်ဆက်မှု မူဝါဒလည်း လိုအပ်သည်; ဤအထောက်အကူ function သည် သယ်ယူပို့ဆောင်မှု လွှဲပြောင်းခြင်းကို သာပြသည်။

ဆက်စပ်ဆောင်းပါးများ