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

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

GoLang:給定公共 RSA 密鑰的 ssh 客戶端配置

GoLang:給定公共 RSA 密鑰的 ssh 客戶端配置

Go
動漫人物 2023-03-07 17:13:02
我需要在給定公共 RSA 密鑰的情況下啟動到遠程主機的 ssh 連接。我到目前為止的代碼如下func sftpClient(host, port, user, pass string) (*sftp.Client, error) {    var authMethod ssh.AuthMethod    if strings.Index(pass, "-----BEGIN RSA PRIVATE KEY-----") == 0 {        signer, err := ssh.ParsePrivateKey([]byte(pass))        if err != nil {            return nil, err        }        authMethod = ssh.PublicKeys(signer)    } else if strings.Index(pass, "---- BEGIN SSH2 PUBLIC KEY ----") == 0 {        publicKey, err := ssh.ParsePublicKey([]byte(pass))        if err != nil {            return nil, err        }        authMethod = ???    } else {        authMethod = ssh.Password(pass)    }    config := &ssh.ClientConfig{        User:            user,        Auth:            []ssh.AuthMethod{authMethod},        HostKeyCallback: ssh.InsecureIgnoreHostKey(),        Config: ssh.Config{            Ciphers: []string{                // some ciphers here            },        },    }    conn, err := ssh.Dial("tcp", host+":"+port, config)    if err != nil {        return nil, err    }    client, err := sftp.NewClient(conn)    if err != nil {        return nil, err    }    return client, nil}基于密碼的身份驗證和基于私鑰的身份驗證工作得很好,因為 ssh 庫提供了這些包裝器(ssh.Password并且ssh.PublicKeys創建了某種包裝器AuthMethod)。我沒有嘗試很多,因為我找不到很多選擇:authMethod = ssh.NewPublicKey(publicKey)authMethod = publicKey它們都不起作用。我還嘗試使用不同的方法解析公鑰,但這也失敗了。我使用的方法是ssh.ParseAuthorizedKey這個 - 類似于ss.ParsePublicKeyreturn aPublicKey顯然不能用作身份驗證方法。所以我的問題是:如何使用給定的公共RSA 密鑰在 Go 上啟動 ssh 客戶端?
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

如何使用給定的公共 RSA 密鑰在 Go 上啟動 ssh 客戶端?

您不能使用公鑰來驗證 ssh 客戶端。您將公鑰提供給服務器,然后客戶端使用私鑰進行身份驗證。

ssh key認證的價值在于私鑰永遠不會離開系統;無需通過電線傳輸任何敏感信息。


查看完整回答
反對 回復 2023-03-07
  • 1 回答
  • 0 關注
  • 297 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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