作者:马芷靈 | 来源:互联网 | 2023-09-16 13:04
1 最近在写SFTP上传文件,看了网上的一堆代码,实验了不少,始终不成功,特来此询问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| func Sftp_connect(user, pbi, local string) {
fmt.Println(user, pbi, local)
pub := PublicKeyFile(pbi)
sshConfig := &ssh.ClientConfig{
User: user,
Auth: []ssh.AuthMethod{
pub,
},
HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
return nil
},
}
conn, err := ssh.Dial("tcp", local, sshConfig)
if err != nil {
fmt.Println("sulwan")
fmt.Println(err)
} else {
fmt.Println(conn)
defer conn.Close()
}
} |
报错:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x63240d]
goroutine 1 [running]:
golang.org/x/crypto/ssh.(*connection).clientAuthenticate(0xc42011c200, 0xc42010e340, 0x0, 0xa)
1
| /data/golang/src/golang.org/x/crypto/ssh/client_auth.go:63 +0x2dd |
golang.org/x/crypto/ssh.(*connection).clientHandshake(0xc42011c200, 0x6f8316, 0x12, 0xc42010e340, 0x0, 0x0)
1
| /data/golang/src/golang.org/x/crypto/ssh/client.go:113 +0x2c4 |
golang.org/x/crypto/ssh.NewClientConn(0x730780, 0xc42000e530, 0x6f8316, 0x12, 0xc420055e70, 0x730780, 0xc42000e530, 0x0, 0x0, 0x1, ...)
1
| /data/golang/src/golang.org/x/crypto/ssh/client.go:83 +0x100 |
golang.org/x/crypto/ssh.Dial(0x6f4442, 0x3, 0x6f8316, 0x12, 0xc420055e70, 0x0, 0xc420016798, 0xc420055ec2)
1
| /data/golang/src/golang.org/x/crypto/ssh/client.go:177 +0xb3 |
github.com/sulwan/until.Sftp_connect(0x6f611b, 0xc, 0x6f5b84, 0xa, 0x6f8316, 0x12)
1
| /data/golang/src/budhad/until/sftp.go:32 +0x28f |
main.main()
1
| /data/go/sina/main.go:38 +0x60 |
寻求上述问题解答,最好能求得一个SFTP pubkey认证上传完整例子