亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用正確的私鑰 (Golang) 連接到 SFTP 服務器失?。ǔ瑫r)

使用正確的私鑰 (Golang) 連接到 SFTP 服務器失?。ǔ瑫r)

Go
幕布斯6054654 2023-02-28 20:24:54
我正在嘗試用 Golang 編寫一個 sftp 客戶端。服務器的所有者需要使用公鑰/私鑰進行連接。我已經向他們發送了一個公鑰(4096 位)并獲得了用戶名。為了測試連接,我使用我的私鑰使用 FileZilla - 它工作正常。但是我的 golang 客戶端不工作:ssh.Dial 永遠掛起或只是在 ClientConfig 超時時中止......有沒有人知道它可能有什么問題(我的代碼或周圍)?我的代碼如下:keyFile := filepath.Join(dir, "id_rsa")pkBytes, err := os.ReadFile(keyFile)if err != nil {    return err}signer, err := ssh.ParsePrivateKeyWithPassphrase(pkBytes, []byte("mysecret"))if err != nil {    return err}username := "my_username"sftpDir := "/home/upload/"keyFile = filepath.Join(dir, "id_rsa.pub")pkBytes, err = os.ReadFile(keyFile)if err != nil {    return err}hostKey, _, _, _, err := ssh.ParseAuthorizedKey(pkBytes)if err != nil {    return err}clientConfig := &ssh.ClientConfig{    User:            username,    Auth:            []ssh.AuthMethod{ssh.PublicKeys(signer)},    HostKeyCallback: ssh.FixedHostKey(hostKey),    Timeout:         10 * time.Second,}conn, err := ssh.Dial("tcp", "sftp.trustyou.com:22", clientConfig)// here we stop or hang forever.... :-(if err != nil {    log.Fatalf("SSH DIAL FAILED:%v", err)}defer conn.Close()
查看完整描述

2 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

我終于可以回答我自己的問題了:代碼沒問題。該問題僅發生在我們位于防火墻后面的客戶服務器上。因此,網絡設置對此負責。為了確保我將 ClientConfig 設置更改為 ssh.InsecureIgnoreHostKey 并在我的辦公室計算機上運行它。它連接成功。


clientConfig := &ssh.ClientConfig{

    User:            h.UserName,

    Auth:            []ssh.AuthMethod{ssh.PublicKeys(t.signer)},

    HostKeyCallback: ssh.InsecureIgnoreHostKey(), // ssh.FixedHostKey(hostKey),

    Timeout:         15 * time.Second,

}

PS 我知道我的答案(和問題本身)現在看起來與這里的一些真正有創意的問題相比很愚蠢......對此感到抱歉。但有時它就是這樣工作的......


查看完整回答
反對 回復 2023-02-28
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

package main


import (

    "github.com/alessiosavi/GoGPUtils/helper"

    stringutils "github.com/alessiosavi/GoGPUtils/string"

    "github.com/alessiosavi/GoSFTPtoS3"

    "io/ioutil"

    "log"

    "strings"

)


func main() {

    log.SetFlags(log.LstdFlags | log.Lshortfile | log.Lmicroseconds)


    var sftpConf = &GoSFTPtoS3.SFTPConf{

        Host:     "localhost", // FIXME: Change host and user

        User:     "alessiosavi",

        Password: "",

        Port:     22,

        Bucket:   "bucket-ftp",

        Timeout:  50,

        PrivKey:  "",

    }

    // FIXME: Use your key

    file, err := ioutil.ReadFile("/home/alessiosavi/.ssh/mykey.pem")

    if err != nil {

        panic(err)

    }

    sftpConf.PrivKey = string(file)


    conn, err := sftpConf.NewConn()

    defer conn.Close()

    list, err := conn.List("/tmp")

    if err != nil {

        panic(err)

    }


    log.Println(helper.MarshalIndent(list))


}


查看完整回答
反對 回復 2023-02-28
  • 2 回答
  • 0 關注
  • 436 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號