我连续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,但两者都不起作用。
答案 0 :(得分:0)
使用openssh,您可以将 dss添加到算法中,并使用未知密钥。此密钥将是您的默认设置,可能不是您在使用中使用的密钥?
在Go方面,您只使用 dss算法和rsa密钥,这可能是问题?
确保您在两种情况下都使用相同的密钥和相同的算法,并且算法与密钥匹配。
如果仍然卡住,可能会将-vvv和所有的完整输出发送到go侧。