拨号失败:握手失败:ssh:没有常见算法gosh的ssh客户端出错

isa*_*ron 3 ssh go

我正在开发一个使用goftp上传到服务器的项目,但是(感谢这里的善意的人)我将使用更安全的方法.

我打算使用ssh来代替,发现golang这个SSH客户端找到这里.

我已经设置了一个ssh服务器(freeSSHd),并且可以在本地和另一台机器上成功连接PuTTY.

我只更改了客户端的这一部分,用我自己的变量替换变量

var (
    server = "127.0.0.1:22"
    username = "username"
    password = clientPassword("password")
)
Run Code Online (Sandbox Code Playgroud)

当我执行ssh客户端时,ssh.Dial返回错误,并且恐慌显示: "无法拨号:握手失败:ssh:没有常见算法"

client, err := ssh.Dial("tcp", "127.0.0.1:22", config)
if err != nil {
    panic("Failed to dial: " + err.Error())
}
Run Code Online (Sandbox Code Playgroud)

我是golang的新手,所以我很感激任何帮助,指出我正确的方向.提前致谢.

ANi*_*sus 8

在包的源代码go.crypto/ssh,我们可以看到支持的密码如下:

  • AES128-CTR
  • AES192-CTR
  • AES256-CTR
  • arcfour128
  • arcfour256

虽然freeSSHd支持:

  • AES128-CBC
  • AES192-CBC
  • AES256-CBC
  • 3DES-CBC
  • 河豚-CBC
  • rijndael128-CBC
  • rijndael192-CBC
  • rijndael256-CBC
  • rijndael-cbc@lysator.liu.se

由于客户端和服务器不共享通用密码,因此您将收到错误消息.ssh包中不支持CBC模式的原因很可能是因为存在漏洞,正如 golang-nuts线程中所讨论的那样.

您的问题的解决方案可能是尝试安装其他SSH服务器,例如OpenSSH for Windows.