サーバーが RHEL 6.5 にアップグレードされ、RHEL 5.9 インストールで sftp および ssh コマンドを介して接続する自動化された bash スクリプトがあるという問題が発生しています。
現在、新しいサーバーは暗号 aes128-ctr、aes192-ctr、および aes256-ctr のみをサポートしています。
aes256-ctr で -c オプションを使用するように ssh コマンドを更新することができ、これが機能しました。
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)。
このオプションは、オープンSSH5.4変化は、「sftp(1) で scp(1) のコマンドライン引数のほとんどをサポートする「」。
コマンドライン引数は-c
主にディレクティブと同等であることに注意してくださいCiphers
( にフォールバックすることもできますCipher
)。ssh
マニュアルページ:
-c cipher_spec
セッションを暗号化するための暗号仕様を選択します。
プロトコルバージョン1では、単一の暗号を指定できます。サポートされている値は、「3des」、「blowfish」、「des」です。プロトコルバージョン2の場合、優先cipher_spec
順位に従ってコンマで区切られた暗号のリストです。Ciphers
ssh_config(5)詳細については。