我正在尝试通过 shell 脚本将文件发送到 SFTP,但收到以下错误
Bad protocol 2 host key algorithms '+ssh-dss'
但如果手动运行 SFTP 命令,我可以传输文件。
请提出建议。
最佳答案
我最近也遇到了这个错误。它发生在我的案例中,因为我修改了 7.0 版客户端的 SSH 配置文件。然后我尝试在另一台使用 SSH 6.6 的机器上使用相同的配置。步骤:
- 检查您的 SSH 版本:
ssh -V
.如果是 OpenSSH_6.6...,您可能和我一样。 - 在
~/.ssh/config
寻找配置文件, 其中~
代表您的主目录。如果找不到,请在/etc/ssh/ssh_config
寻找一个. - 用文本编辑器打开配置文件并查找一行:
HostKeyAlgorithms +ssh-dss
. - 通过添加
#
来注释该行开始。
替代方案
重新阅读原始帖子后,问题可能只是运行了两个不同版本的 SSH,可能是 shell 中的 7.0 和脚本中的 6.6。在这种情况下,这可能是更好的解决方案:
- 在 shell 中,键入:
type -a sftp
.最上面的结果是你的 shell 使用的 sftp。例如。/usr/local/bin/sftp
.如果有更多结果,您的脚本可能会运行其中一个,因为它具有不同的 PATH 定义。 - 更改
sftp
在您的脚本中调用您在第 1 步中找到的 sftp 二进制文件的完整路径。 - 或者,您可以将脚本中的 PATH 设置为与您的 shell 相同。为此,请发出
echo $PATH
在你的 shell 里。复制输出并在脚本顶部附近添加一行:export PATH='<path you copied>'
关于linux - 协议(protocol) 2 主机 key 算法错误 '+ssh-dss',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43976819/