サーバーがRHEL 6.5にアップグレードされ、sftpコマンドとsshコマンドを介して接続するRHEL 5.9インストールに自動化された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コマンドは同じRHEL5.9ボックスで実行されるので、なぜこれがsftpではなくsshで機能するのか疑問に思います。
また、これを修正して、クライアント側を変更せずにsftpを使用して接続できるようにするにはどうすればよいですか?
Cipher
ディレクティブはSSHバージョン1用です(現在は使用されていません)。
SSHバージョン2の場合、Ciphers
を使用します。
sftp -oCiphers=aes256-ctr
ssh_config
manページ を参照してください。
ただし、sftp
は-c
スイッチもサポートしています。したがって、-o
を使用する必要はありません。
sftp
のマニュアルページ を参照してください:
-c cipher
データ転送の暗号化に使用する暗号を選択します。
このオプションは ssh(1) に直接渡されます。
このオプションは OpenSSH 5.4 以降サポートされています。この変更は、 "sftp(1)でscp(1)のコマンドライン引数のほとんどをサポートする"として偽装されています。
コマンドライン引数-c
は主にCiphers
ディレクティブと同等であることに注意してください(ただし、Cipher
にフォールバックできます)。 ssh
manページ からの引用:
-c cipher_spec
セッションを暗号化するための暗号仕様を選択します。
プロトコルバージョン1では、単一の暗号を指定できます。サポートされている値は、「3des」、「blowfish」、および「des」です。プロトコルバージョン2の場合、cipher_spec
は、優先順でリストされた暗号のコンマ区切りリストです。詳細については、 ssh_config(5) のCiphers
キーワードを参照してください。