2 回答

TA貢獻1805條經驗 獲得超10個贊
顯然,這是go.mod
文件的問題。兩者都已過時golang.org/x/crypto
,golang.org/x/sys
一旦我更新它們,它就開始工作了。感謝@kkleejoe 的幫助。

TA貢獻1826條經驗 獲得超6個贊
假設您可以ssh user@host沒有密碼,公鑰可能是~/.ssh/id_rsa或~/.ssh/id_ecda
import "golang.org/x/crypto/ssh"
import "io/ioutil"
import "strconv"
func DialWithPublickey(addr string, port int, user, publickeyfile string) (*ssh.Client, error) {
key, err := ioutil.ReadFile(publickeyfile)
if err != nil {
return nil, err
}
signer, err := ssh.ParsePrivateKey(key)
if err != nil {
return nil, err
}
client, err := ssh.Dial("tcp", addr+":"+strconv.Itoa(port), &ssh.ClientConfig{
User: user,
Auth: []ssh.AuthMethod{ssh.PublicKeys(signer)},
HostKeyCallback: ssh.HostKeyCallback(func(string, net.Addr, ssh.PublicKey) error { return nil }),
})
if client == nil || err != nil {
return nil, err
}
client.SendRequest(user+"@"+addr, true, nil) // keep alive
return client, nil
}
嘗試DialWithPublickey(host, port, user, "~/.ssh/id_rsa")
- 2 回答
- 0 關注
- 1451 瀏覽
添加回答
舉報