【问题标题】:Bad protocol 2 host key algorithms '+ssh-dss'错误的协议 2 主机密钥算法“+ssh-dss”
【发布时间】:2017-10-14 01:56:25
【问题描述】:

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

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

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

请提出建议。

【问题讨论】:

  • OpenSSH 7.0 及更高版本同样禁用 ssh-dss (DSA) 公钥算法。它也很弱,我建议不要使用它。可以使用 HostKeyAlgorithms 配置选项重新启用它:ssh -oHostKeyAlgorithms=+ssh-dss user@legacyhost 或在 ~/.ssh/config 文件中:Host somehost.example.org HostKeyAlgorithms +ssh-dss

标签: linux shell unix


【解决方案1】:

我最近也遇到了这个错误。这发生在我的案例中,因为我已经为 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 相同。为此,请在您的 shell 中发出echo $PATH。复制输出并在脚本顶部附近添加一行:export PATH='<path you copied>'

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 2022-08-03
    • 2021-04-14
    • 1970-01-01
    • 2013-04-24
    • 2018-12-09
    • 2018-09-13
    • 2020-03-03
    • 2020-04-10
    相关资源
    最近更新 更多