linux - 协议(protocol) 2 主机 key 算法错误 '+ssh-dss'

标签 linux shell unix

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

关于linux - 协议(protocol) 2 主机 key 算法错误 '+ssh-dss',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43976819/

相关文章:

c - 推送服务器的 select() 问题 - c/c++

linux - 通过 BASH 用下划线替换空格

php - http请求到同一网络的其他计算机失败

php - 安装 phabricator 时无法连接到 mysql

linux - Unix 切操作

linux - 存储在变量中的 ssh 输出以测试其值

mysql - 使用参数在 bash 中执行 .sql 文件

linux - 创建服务tomcat - 启动和关闭

Windows服务移植到linux

c - 寄存器数据类型变量是否有限?