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 தொகுப்பு நம்பகமான known_hosts கோப்பிலிருந்து அந்த callback ஐ உருவாக்கும். இலக்கு ஹோஸ்ட்பெயரை NewClientConn க்கு அனுப்புங்கள், அப்போது ஹோஸ்ட்-கீ பொருத்தம் நோக்கமான SSH அடையாளத்தைப் பயன்படுத்தும்.
nil வாதம் எந்த SOCKS சான்றுகளையும் தேர்ந்தெடுக்காது. அனுமதிக்கப்பட்ட பொது SSH இலக்குகளுக்கு SOCKS5 ப்ராக்ஸி பட்டியல்இல் உள்ள கணக்கில்லாத உள்ளீடு proxyAddr ஐ வழங்கலாம், அது உண்மையான SSH ஹோஸ்ட் மற்றும் போர்ட்டை அனுமதித்தால். தேவைப்பட்டால் ப்ராக்ஸி கணக்கைக் கொண்ட proxy.Auth ஐ அனுப்புங்கள்; SSH அங்கீகாரம் config இலேயே இருக்கும்.
NewClient, NewClientConn திருப்பித் தரும் உள்வரும் சேனல் மற்றும் கோரிக்கை ஸ்ட்ரீம்களைப் பெற்று அந்த கிளையண்ட் இயந்திரத்தைக் கையாள்கிறது. வேலை முடிந்ததும் திருப்பித் தரப்பட்ட SSH கிளையண்டை மூடுங்கள். உற்பத்தியில் இணைப்புக் கையாளலுக்கு வரம்பிட்ட டயலிங் மற்றும் கைக்குலுக்கல் கொள்கையும் தேவை; இந்த உதவி சார்பு இயக்கத்தின் ஒப்படைப்பை மட்டும் விளக்குகிறது.