第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

嘗試通過 SSH 連接到遠(yuǎn)程主機時出錯

嘗試通過 SSH 連接到遠(yuǎn)程主機時出錯

Go
慕村9548890 2023-07-31 15:18:13
我正在嘗試連接到遠(yuǎn)程主機以發(fā)出命令,但在運行代碼時收到以下錯誤消息:ssh:握手失?。簊sh:沒有通用的密鑰交換算法;客戶端提供:[curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 diffie-hellman-group14-sha1],服務(wù)器提供:[diffie-hellman-group1-sha1]恐慌:運行時錯誤:無效的內(nèi)存地址或零指針取消引用[信號SIGSEGV:分段違規(guī)代碼= 0x1 addr = 0x10 pc = 0x759836]這是我正在使用的代碼:func (SSHClient *SSH) Connect(mode int) {    var SSHConfig *ssh.ClientConfig    var auth []ssh.AuthMethod    if mode == CERT_PUBLIC_KEY_FILE {        auth = []ssh.AuthMethod{SSHClient.readPublicKeyFile(SSHClient.Cert)}    }    SSHConfig = &ssh.ClientConfig{        User:            SSHClient.User,        Auth:            auth,        HostKeyCallback: ssh.InsecureIgnoreHostKey(),        Timeout:         time.Second * DEFAULT_TIMEOUT,    }    SSHConfig.Config.Ciphers = append(SSHConfig.Config.Ciphers, "diffie-hellman-group1-sha1")    client, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", SSHClient.IP, SSHClient.Port), SSHConfig)    if err != nil {        fmt.Printf("ERROR - While trying to Dial to the host %s with error: %s", SSHClient.IP, err.Error())        return    }    session, err := client.NewSession()    if err != nil {        fmt.Printf("ERROR - While trying to create a new session on host %s with error: %s", SSHClient.IP, err.Error())        client.Close()        return    }    SSHClient.session = session    SSHClient.client = client}關(guān)于如何解決這個問題有什么想法嗎?提前致謝。
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗 獲得超13個贊

問題是......服務(wù)器只愿意通過 diffie-hellman-group1-sha1 進(jìn)行對話

和:

  • golang/go 問題 2903 : ssh: 添加 diffie-hellman-group1-sha1,已于 6 天前關(guān)閉

  • golang/go/issue 17230 : 提案: x/crypto/ssh: 支持 RFC 4419 中的 Diffie-Hellman Group Exchange,現(xiàn)已實施。

因此,您的客戶端需要一個 的分支 golang.org/x/crypto/ssh,例如Bored-engineer/ssh,其中提交 39a91b提交 fe5e4ff確實添加了對 diffie-hellman-group1-sha1 的支持。
或者安裝最新的golang/crypto,其中包括提交 57b3e21。


查看完整回答
反對 回復(fù) 2023-07-31
?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗 獲得超4個贊

恐慌有些奇怪。顯然,當(dāng)無法就密鑰交換算法達(dá)成一致時,就會出現(xiàn)問題。Diffie-Hellman密鑰交換是最近才添加的(6 月 3 日)。由于您的服務(wù)器僅提供該算法,因此如果沒有它,您將無法開始。

這不是恐慌的原因(恐慌似乎發(fā)生在ssh.Dial其內(nèi)部),但我會注意到,當(dāng)你這樣做時:

SSHConfig.Config.Ciphers?=?append(SSHConfig.Config.Ciphers,?"diffie-hellman-group1-sha1")

您最終告訴 Go 代碼使用 diffie-hellman-group1-sha1 作為通道加密。您無需在此處添加任何內(nèi)容。原因是SSHConfig.Config.Ciphers最初為零。所以你不妨這樣寫:

SSHConfig.Config.Ciphers?=?[]string{"diffie-hellman-group1-sha1"}

以獲得相同的效果,即:事情不起作用。

您可以在添加到列表之前調(diào)用SetDefaults以使列表非空,但是如果沒有此模式的實現(xiàn),則添加到列表是無效的 - 即使使用新的提交,也不允許 Diffie-Hellman 進(jìn)行其他任何操作比密鑰交換本身。請注意,ssh.Dial調(diào)用ssh.NewClientConn,以以下內(nèi)容開頭:

fullConf := *config

fullConf.SetDefaults()

SetDefaults依次在這里并包含:


if c.Ciphers == nil {

? ? c.Ciphers = preferredCiphers

}

var ciphers []string

for _, c := range c.Ciphers {

? ? if cipherModes[c] != nil {

? ? ? ? // reject the cipher if we have no cipherModes definition

? ? ? ? ciphers = append(ciphers, c)

? ? }

}

c.Ciphers = ciphers

它首先表示如果未設(shè)置配置Ciphers,則應(yīng)使用默認(rèn)值,然后立即過濾掉cipherModes. 這又在此處定義并以此注釋開頭:


// cipherModes documents properties of supported ciphers. Ciphers not included

// are not supported and will not be negotiated, even if explicitly requested in

// ClientConfig.Crypto.Ciphers.

該短語不在文檔中。它應(yīng)該是! 未包含的密碼不受支持,也不會進(jìn)行協(xié)商,即使在ClientConfig.Crypto.Ciphers.


查看完整回答
反對 回復(fù) 2023-07-31
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗 獲得超5個贊

Diffie-hellman-group1-sha1 是一種密鑰交換算法。Config 結(jié)構(gòu)中應(yīng)該是 KeyExchanges 而不是 Ciphers


SSHConfig.Config.KeyExchanges = append(SSHConfig.Config.KeyExchanges, "diffie-hellman-group1-sha1")

代替


SSHConfig.Config.Ciphers = append(SSHConfig.Config.Ciphers, "diffie-hellman-group1-sha1")

如果未指定 KeyExchanges,則使用的默認(rèn)算法可以在 ssh/common.go 中找到


// preferredKexAlgos specifies the default preference for key-exchange algorithms

// in preference order.

var preferredKexAlgos = []string{

    kexAlgoCurve25519SHA256,

    kexAlgoECDH256, kexAlgoECDH384, kexAlgoECDH521,

    kexAlgoDH14SHA1,

}

可以看到,此時 kexAlgoDH1SHA1 或 diffie-hellman-group1-sha1 并未列出


查看完整回答
反對 回復(fù) 2023-07-31
  • 2 回答
  • 0 關(guān)注
  • 349 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號