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