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

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

go 中的 ssh 服務器:如何提供不同于 rsa 的公鑰類型?

go 中的 ssh 服務器:如何提供不同于 rsa 的公鑰類型?

Go
慕森卡 2022-10-17 17:20:01
我正在嘗試使用該x/crypto/ssh模塊創建一個 ssh 服務器,但我無法使公鑰身份驗證工作。我嘗試了文件中的ExampleNewServerConn()函數ssh/example_test.go(在https://go.googlesource.com/crypto repo 中),但公鑰方法不起作用,看起來服務器沒有宣傳正確的算法,因為我得到了這一行嘗試與 ssh 客戶端連接時:debug1: send_pubkey_test: no mutual signature algorithm如果我添加-o PubkeyAcceptedKeyTypes=+ssh-rsa公鑰登錄有效,但不推薦使用此 rsa 方法,我想使用另一種公鑰類型,我該怎么做?提前致謝。
查看完整描述

2 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

我發現為什么客戶端和服務器不能通信,rsa-sha2 算法還沒有在 x/crypto 庫中實現。github上有一個關于它的問題:https ://github.com/golang/go/issues/49952 。

臨時解決方案是添加

replace golang.org/x/crypto => github.com/rmohr/crypto v0.0.0-20211203105847-e4ed9664ac54

在你的 go.mod 文件的末尾,它使用來自@rmohr 的 ax/crypto fork,它與 rsa-sha2 一起使用。


查看完整回答
反對 回復 2022-10-17
?
慕后森

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

這是一種簡單的方法,讓letsencrypt為您處理證書:)


func main() {

    r := mux.NewRouter()

    r.HandleFunc("/index", index)

    certManager := autocert.Manager{

        Prompt:     autocert.AcceptTOS,

        HostPolicy: autocert.HostWhitelist("www.example.com"), // replace with your domain

        Cache:      autocert.DirCache("certs"),

    }

    srv := &http.Server{

        Handler:      r,

        Addr:         ":https",

        WriteTimeout: 5 * time.Second,

        ReadTimeout:  5 * time.Second,

        TLSConfig: &tls.Config{

            GetCertificate: certManager.GetCertificate,

        },

    }

    go http.ListenAndServe(":http", certManager.HTTPHandler(nil)) //nolint

    log.Fatal(srv.ListenAndServeTLS("", ""))

}


查看完整回答
反對 回復 2022-10-17
  • 2 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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