web-dev-qa-db-ja.com

sftpで暗号の不一致の問題を修正するにはどうすればよいですか?

サーバーが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を使用して接続できるようにするにはどうすればよいですか?

4
Hazok

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キーワードを参照してください。

8
Martin Prikryl