错误的协议 2 主机密钥算法'+ssh-dss'



我正在尝试通过shell脚本将文件发送到SFTP,但收到以下错误

Bad protocol 2 host key algorithms '+ssh-dss'

但是,如果手动运行SFTP命令,我可以传输文件。

请指教。

我最近也遇到了这个错误。就我而言,这是因为我修改了 7.0 版客户端的 SSH 配置文件。然后我尝试在使用 SSH 6.6 的另一台机器上使用相同的配置。步骤:

  1. 检查您的 SSH 版本:ssh -V。如果是OpenSSH_6.6......你可能和我在同一条船上。
  2. ~/.ssh/config中查找配置文件,其中~表示您的主目录。如果您找不到,请在/etc/ssh/ssh_config中寻找一个。
  3. 使用文本编辑器打开配置文件并查找一行:HostKeyAlgorithms +ssh-dss.
  4. 通过在开头添加#来注释该行。

替代解决方案

重新阅读原始帖子后,看起来问题可能只是运行两个不同版本的 SSH,也许是 shell 中的 7.0 和脚本中的 6.6。在这种情况下,这可能是更好的解决方案:

  1. 在外壳中,键入:type -a sftp。顶部结果是你的 shell 正在使用的 sftp。例如/usr/local/bin/sftp.如果有更多结果,则脚本可能正在运行其中一个结果,因为它具有不同的 PATH 定义。
  2. 将脚本中的sftp调用更改为在步骤 1 中找到的 sftp 二进制文件的完整路径。
  3. 或者,您可以将脚本中的 PATH 设置为与 shell 的路径相同。为此,请在外壳中发出echo $PATH。复制输出并在脚本顶部附近添加一行:export PATH='<path you copied>'

最新更新