Golang sFTP SSH:身份验证失败

时间:2017-08-10 19:07:38

标签: go

我连续3天尝试设置sFTP连接,将文件上传到客户端服务器。

我正在使用这个: 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传输并且可以正常工作。

但这是一个.bat文件,这就是为什么我们要改变它。

使用WinSCP通过rsa putty私钥连接到sFTP。

这可能是问题之一,好像我理解正确,我不能在golang ssh包中使用puTTy私钥。

所以我尝试了putty键和转换为openSSH,但两者都不起作用。

1 个答案:

答案 0 :(得分:0)

使用openssh,您可以 dss添加到算法中,并使用未知密钥。此密钥将是您的默认设置,可能不是您在使用中使用的密钥?

在Go方面,您只使用 dss算法和rsa密钥,这可能是问题?

确保您在两种情况下都使用相同的密钥和相同的算法,并且算法与密钥匹配。

如果仍然卡住,可能会将-vvv和所有的完整输出发送到go侧。