如何修复 sftp 密码不匹配问题?

如何修复 sftp 密码不匹配问题?

我遇到一个问题,服务器升级到 RHEL 6.5,并且我们在通过 sftp 和 ssh 命令连接的 RHEL 5.9 安装上自动执行了 bash 脚本。

现在,新服务器仅支持密码aes128-ctr,aes192-ctr和aes256-ctr。

我可以更新 ssh 命令以使用带有 aes256-ctr 的 -c 选项,并且此操作有效:

ssh -c aes256-ctr ${remote_host} ${my_command}

但是,当我尝试对 sftp 执行等效操作时:

sftp -oCipher=aes256-ctr ${remote_host} <<< $'get /home/me/* me/'

我收到一个错误,客户端不支持与服务器相同的密码:

未找到匹配的密码:客户端 arcfour256、aes128-cbc、3des-cbc、blowfish-cbc、cast128-cbc、arcfour、aes192-cbc、aes256-cbc 服务器 aes128-ctr、aes192-ctr、aes256-ctr

这些 ssh 和 sftp 命令在同一个 RHEL 5.9 框中执行,所以我想知道为什么它对 ssh 有效而对 sftp 无效?

另外,如何修复此问题,以便我可以使用 sftp 进行连接而无需进行任何客户端更改?

答案1

Cipher指令适用于 SSH 版本 1(目前已不再使用)。

对于 SSH 版本 2,请使用Ciphers

sftp -oCiphers=aes256-ctr

查看ssh_config手册页


但请注意,也sftp支持-c切换。因此无需使用-o

查看sftp手册页

-c cipher

选择用于加密数据传输的密码。
此选项直接传递给SSH(1)

该选项自以下日期起受支持OpenSSH 5.4. 更改伪装成“在 sftp(1) 中支持 scp(1) 的大部分命令行参数“。


请注意,命令行参数-c主要相当于Ciphers指令(尽管它可以返回到Cipher)。引用自ssh手册页

-c cipher_spec

选择用于加密会话的密码规范。
协议版本 1 允许指定单个密码。支持的值是“3des”、“blowfish”和“des”。对于协议版本 2,cipher_spec是按优先顺序列出的以逗号分隔的密码列表。请参阅Ciphers关键字ssh_配置(5)了解更多信息。

相关内容