As a novice, ask GO to use SSH KEY upload, also known as SFTP upload.

1 recently in writing SFTP upload file, read a pile of code on the Internet, a lot of experiments, always unsuccessful, here to inquire

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()
    }
}

error:
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)

/data/golang/src/golang.org/x/crypto/ssh/client_auth.go:63 +0x2dd

golang.org/x/crypto/ssh. (* connection) .clientHandler (0xc42011c200,0x6f8316,0x12,0xc42010e340,0x0, 0x0)

/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,.)

/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)

/data/golang/src/golang.org/x/crypto/ssh/client.go:177 +0xb3

github.com/sulwan/until.Sftp_connect (0x6f611b, 0xc, 0x6f5b84, 0xa, 0x6f8316, 0x12)

/data/golang/src/budhad/until/sftp.go:32 +0x28f

main.main ()

/data/go/sina/main.go:38 +0x60

for answers to the above questions, it is best to find a complete example of SFTP pubkey authentication upload

Mar.10,2021

it is recommended to learn the sftpfs library, which can be obtained as follows:

go get github.com/spf13/afero/sftpfs

these off-the-shelf libraries can save you a lot of work.

Menu