3天后,我一直在嘗試建立一個sFTP連接以將文件上傳到客戶端服務器。Golang sFTP SSH:身份驗證失敗
我使用這個: https://gist.github.com/svett/b7f56afc966a6b6ac2fc
唯一的區別是我補充說:
sshConfig := &ssh.ClientConfig{
User: "0000003579",
Auth: []ssh.AuthMethod{
//SSHAgent(),
PublicKeyFile("C:\\GoDev\\src\\Texel.ca\\Bnc_Ftp\\.ssh\\id_rsa"),
},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
HostKeyAlgorithms: []string{"ssh-dss"},
}
sshConfig.Ciphers = append(sshConfig.Ciphers, "aes128-cbc")
,因爲我的客戶端服務器仍在使用CBC和仍然使用ssh-DSS。
我的問題:
當嘗試連接時,我得到如下回應:
無法撥打:SSH:握手失敗:SSH:無法驗證,嘗試方法[無公鑰],仍然沒有支持的方法
我試圖通過命令行中的openSSH使用相同的證書進行連接
ssh -oHostKeyAlgorithms=+ssh-dss ***@2XXX.XXX.XXX.XX -vvv
它工作。
我可以通過openSSH獲得更多關於我的錯誤的信息,例如-vvv命令?或者你們有沒有想法?
謝謝!
編輯
只是爲了瞭解更多信息,有一個工作的工具,現在,做了SFTP transfert和它的作品。
但它是一個.bat文件,這就是爲什麼我們要改變它。
它使用WinSCP通過rsa putty私鑰連接到sFTP。
這可能是問題之一,因爲如果我理解正確,我不能在golang ssh包中使用puTTy私鑰。
所以我試了膩子鍵和轉換爲openSSH,但都不起作用。
你能檢查服務器上的日誌嗎?它似乎是驗證失敗(如果它是HostKeyAlgorithm或Ciphers列表,你會得到一個「沒有通用算法」的錯誤) – JimB
不幸的是,我沒有訪問服務器。他們有一個非常緩慢的服務,並試圖讓他們檢查需要幾周的事情。 我不能在客戶端獲取日誌嗎?和終端中的openSSH一樣,我似乎有更多的信息作爲客戶端。 – KarDiamond
您是否完全按照書面使用鏈接的示例?它正在默默地吞嚥錯誤,所以我將開始修復代碼並添加一些日誌記錄。否則,你可以進入ssh包,並將'debugHandshake'改爲true來進一步瞭解,或者開始添加你自己的調試日誌。 – JimB