Можно ли добавить шифр для клиента sftp?

Я столкнулся с проблемой, когда сервер был обновлен до RHEL 6.5, и у нас есть автоматические сценарии при установке RHEL 5.9, которая соединяется с помощью команд 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-ctr,aes256-ctr

Эти команды ssh и sftp выполняются в одном и том же окне RHEL 5.9, поэтому мне интересно, почему это работает для ssh, а не для sftp?

Кроме того, как это исправить, чтобы я мог подключиться с помощью sftp без каких-либо изменений на стороне клиента?

2 ответа

Решение

sftp -o принимает ssh_option ( источник).

ssh_config говорит, что Cipher для протокола ssh v1 (который вы никогда не должны использовать) и Ciphers для протокола SSH v2.

Cipher Директива для SSH версии 1 (которая в настоящее время не используется).

Для SSH версии 2 используйте Ciphers:

sftp -oCiphers=aes256-ctr

Увидеть ssh_config справочная страница.


Хотя обратите внимание, что sftp поддерживает -c переключиться тоже. Так что нет необходимости использовать -o,

Увидеть sftp справочная страница:

-c cipher

Выбирает шифр, который будет использоваться для шифрования передачи данных.
Эта опция напрямую передается в ssh (1).

Опция поддерживается начиная с OpenSSH 5.4. Изменение замаскировано как "Поддержка большинства аргументов командной строки scp(1) в sftp (1)".


Обратите внимание на аргумент командной строки -c в первую очередь эквивалент Ciphers директива (в то время как он может отступить к Cipher). Цитата из ssh справочная страница:

-c cipher_spec

Выбирает спецификацию шифра для шифрования сеанса.
Протокол версии 1 позволяет указывать один шифр. Поддерживаемые значения: "3des", "blowfish" и "des". Для протокола версии 2, cipher_spec это разделенный запятыми список шифров, перечисленных в порядке предпочтения. Увидеть Ciphers ключевое слово в ssh_config(5) для получения дополнительной информации.

Другие вопросы по тегам