![如何解決 sftp 密碼不符問題?](https://rvso.com/image/1451215/%E5%A6%82%E4%BD%95%E8%A7%A3%E6%B1%BA%20sftp%20%E5%AF%86%E7%A2%BC%E4%B8%8D%E7%AC%A6%E5%95%8F%E9%A1%8C%EF%BC%9F.png)
我遇到一個問題,伺服器升級到 RHEL 6.5,我們在 RHEL 5.9 安裝上有自動 bash 腳本,透過 sftp 和 ssh 命令進行連線。
現在,新伺服器僅支援密碼 aes128-ctr、aes192-ctr 和 aes256-ctr。
我能夠更新 ssh 命令以將 -c 選項與 aes256-ctr 結合使用,這有效:
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-6ctrc
這些 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)了解更多。