Сервер представляет собой Ubuntu Server 11.04 с sshd.
SSH отлично работает для консольных программ.
Но передача данных происходит медленно, что очень раздражает при передаче больших файлов.
Я пробовал две разные клиентские программы и менял порт, но скорость всегда одинаковая. Я знаю, что сервер может передавать данные намного быстрее через SSL, который, насколько мне известно, использует AES. Я также настроил свой SSH-клиент на использование AES, но никакого эффекта.
Почему использование SSH в несколько раз медленнее, чем SSL, и есть ли способ улучшить скорость передачи данных по SSH?
решение1
Есть проект под названием HPN-SSH(Высокая производительность SSH/SCP), это клиент по умолчанию в FreeBSD с некоторого времени, так что я думаю, что его можно считать стабильным. Я заметил небольшой прирост скорости к/с моего резервного сервера в моей локальной сети, но реальный прирост от HPN-SSH, как я понимаю, проявляется на больших расстояниях (подробнее об этом читайте на их сайте). Я не знаю, относится ли это к вам.
Но если вы действительно хотите улучшить производительность, вы можете перейти на более простые алгоритмы шифрования, такие как blowfish или archfour. В целом я не вижу в этом проблемы.
решение2
Я предполагаю, что один процессор действительно медленный или уже выжат. Способы ускорения - использование вышеупомянутого патча 'hpn', который позволит вам вообще отказаться от шифрования, или, если вы не хотите потерять все шифрование (не могу вас винить), вы можете переключиться на использование шифрования 'arcfour' с помощью опции Ciphers
либо в CLI, либо в ~/.ssh/config
. Это значительно менее ресурсоемко, чем стандартные алгоритмы шифрования, но в то же время это не так безопасно. Я получаю невероятно низкую скорость передачи ssh на моем eee PC, который работает на одноядерном процессоре 1,6 ГГц.
Пример:
ssh -oCiphers='arcfour' user@host
Если вы используете scp
, сделайте следующее:
-oCiphers='arcfour'
Если вы используете rsync
для переноса, то сделайте следующее:
-e'ssh -oCiphers=arcfour'