我正在开发一个使用goftp上传到服务器的项目,但是(感谢这里的善意的人)我将使用更安全的方法。
我打算改用ssh,在golang找到这个ssh客户端here。
我已经设置了一个ssh服务器(freeSSHd),并且可以在本地和另一台机器上成功连接PuTTY。
我只更改了客户端的这一部分,用我自己的
替换变量var (
server = "127.0.0.1:22"
username = "username"
password = clientPassword("password")
)
当我执行ssh客户端时,ssh.Dial会返回错误,并且恐慌显示: “拨号失败:握手失败:ssh:没有通用算法”
client, err := ssh.Dial("tcp", "127.0.0.1:22", config)
if err != nil {
panic("Failed to dial: " + err.Error())
}
我是golang的新手,所以我很感激能帮助我指出正确的方向。提前谢谢。
答案 0 :(得分:8)
在go.crypto/ssh
包的source code中,我们可以看到支持的密码如下:
虽然freeSSHd支持:
由于客户端和服务器不共享通用密码,因此您将收到错误消息。 ssh包中不支持CBC模式的原因很可能是因为vulnerability,如this golang-nuts线程中所述。
您的问题的解决方案可能是尝试安装其他SSH服务器,例如OpenSSH for Windows。
答案 1 :(得分:1)
虽然不安全但你可以使用freeSSH支持的密码库。
sshConfig.Config.Ciphers = append(sshConfig.Config.Ciphers, "aes128-cbc")