Haz*_*zok 4 encryption ssh bash sftp aes
我遇到了服务器升级到 RHEL 6.5 的问题,我们在通过 sftp 和 ssh 命令连接的 RHEL 5.9 安装上安装了自动 bash 脚本。
现在,新服务器仅支持密码 aes128-ctr、aes192-ctr 和 aes256-ctr。
我能够更新 ssh 命令以将 -c 选项与 aes256-ctr 一起使用,这有效:
ssh -c aes256-ctr ${remote_host} ${my_command}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试对 sftp 执行等效操作时:
sftp -oCipher=aes256-ctr ${remote_host} <<< $'get /home/me/* me/'
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,指出客户端不支持与服务器相同的密码:
找不到匹配的密码:客户端 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 进行连接而无需任何客户端更改?
该Cipher指令适用于 SSH 版本 1(目前未使用)。
对于 SSH 版本 2,请使用Ciphers:
sftp -oCiphers=aes256-ctr
Run Code Online (Sandbox Code Playgroud)
请参阅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是按优先顺序列出的以逗号分隔的密码列表。有关更多信息,请参阅ssh_config(5) 中的Ciphers关键字。