如何解決 sftp 密碼不符問題?

如何解決 sftp 密碼不符問題?

我遇到一個問題,伺服器升級到 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)了解更多。

相關內容