‘соединение неожиданно закрыто’ при использовании rsync с различными аргументами командной строки

Вопрос или проблема

Я хочу скопировать файл iso с сервера на свой компьютер, используя rsync. Я использовал следующую команду, но что-то не так, и я не могу понять, что. Я проверил местоположение файла ключа и оригинального файла.

rsync --progress -avz -e 'ssh -v -i ./.ssh/new_keys node@<ip_address>' node@<ip_address>:~/ubuntu-16.04.1-server-amd64.iso ./Downloads/Ubuntu_Server.iso

Это лог, созданный с помощью параметра -v.

OpenSSH_7.3p1 Debian-1, OpenSSL 1.0.2h  3 May 2016
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение опций для *
debug1: Подключение к <ip_address> [<ip_address>] порт 22.
debug1: Соединение установлено.
debug1: файл идентификации ./.ssh/new_keys тип 3
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации ./.ssh/new_keys-cert тип -1
debug1: Включение режима совместимости для протокола 2.0
debug1: Локальная версия строка SSH-2.0-OpenSSH_7.3p1 Debian-1
debug1: Удаленная версия протокола 2.0, удаленная версия программного обеспечения OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: совпадение: OpenSSH_7.2p2 Ubuntu-4ubuntu2.1 пат OpenSSH* совместимость 0x04000000
debug1: Аутентификация к <ip_address>:22 как 'node'
debug1: SSH2_MSG_KEXINIT отправлено
debug1: SSH2_MSG_KEXINIT получено
debug1: kex: алгоритм: [email protected]
debug1: kex: алгоритм ключа хоста: ecdsa-sha2-nistp256
debug1: kex: шифр сервера->клиенту: [email protected] MAC: <implicit> сжатие: нет
debug1: kex: шифр клиенту->серверу: [email protected] MAC: <implicit> сжатие: нет
debug1: ожидая SSH2_MSG_KEX_ECDH_REPLY
debug1: Ключ хоста сервера: ecdsa-sha2-nistp256 SHA256:jXVkrQn/jcw9yrL/mQEvT0v2aXxRd9WZo7BjiO6i1eU
debug1: Хост '<ip_address>' известен и соответствует ключу хоста ECDSA.
debug1: Найден ключ в /home/papagolf/.ssh/known_hosts:1
debug1: повторная аутентификация после 134217728 блоков
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидая SSH2_MSG_NEWKEYS
debug1: повторная аутентификация после 134217728 блоков
debug1: SSH2_MSG_NEWKEYS получено
debug1: SSH2_MSG_EXT_INFO получено
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT получено
debug1: Аутентификации, которые могут продолжаться: publickey
debug1: Следующий метод аутентификации: publickey
debug1: Предложение открытого ключа ECDSA: ./.ssh/new_keys
debug1: Сервер принимает ключ: pkalg ecdsa-sha2-nistp521 blen 172
Введите пароль для ключа './.ssh/new_keys': 
debug1: Аутентификация прошла успешно (publickey).
Аутентифицировано к <ip_address> ([<ip_address>]:22).
debug1: канал 0: новый [клиент-сессия]
debug1: Запрос [email protected]
debug1: Вход в интерактивную сессию.
debug1: pledge: сеть
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Отправка окружения.
debug1: Отправка env LANG = en_US.utf8
debug1: Отправка команды: <ip_address> rsync --server --sender -vlogDtprze.iLsfx . ~/ubuntu-16.04.1-server-amd64.iso
debug1: client_input_channel_req: channel 0 rtype статус выхода ответ 0
debug1: client_input_channel_req: channel 0 rtype [email protected] ответ 0
bash: <ip_address>: команда не найдена
debug1: канал 0: свободен: клиент-сессия, nchannels 1
debug1: fd 0 очищает O_NONBLOCK
debug1: fd 1 очищает O_NONBLOCK
Передано: отправлено 2580, получено 2776 байт, за 0.6 секунд
Байты в секунду: отправлено 4231.2, получено 4552.7
debug1: Статус выхода 127
rsync: соединение неожиданно закрыто (0 байт получено до сих пор) [Получатель]

У меня было такое же сообщение об ошибке:

rsync: соединение неожиданно закрыто (0 байт получено до сих пор) [отправитель]
rsync ошибка: ошибка в потоке данных протокола rsync (код 12) в io.c(228) [отправитель=3.2.3]

Проблема: rsync не был установлен на целевой системе.

После установки rsync на целевой системе все прошло без ошибок.

Вам нужна только такая команда.

rsync --progress -avz -e 'ssh -v -i ./.ssh/new_keys' node@<ip_address>:~/ubuntu-16.04.1-server-amd64.iso ./Downloads/Ubuntu_Server.iso

Так что убирайте node@<ip_address> из -e ssh '-v -i ...'

В моем случае такая команда

rsync -vaP -e "ssh -i ~/.ssh/id_rsa_test" ~/source/grafana-test-logs [email protected]:/mnt/test/logs

работала после того, как /mnt/test/logs получил правильные разрешения, так что мне понадобились chmod/chown на удаленном сервере

В моем случае эта ошибка была вызвана тем, что сервер ssh Termux был отключен из-за оптимизации аккумулятора Android. После отключения этих оптимизаций (Бережливый режимБез ограничений; termux-wake-lock включен, другие приложения закрыты, адаптер питания подключен к устройству) и повторного запуска сервера передача файлов с помощью rsync может быть продолжена.

У меня была эта проблема (ну, то же сообщение об ошибке, но не та же проблема),

Она исчезла, когда я удалил аргумент --compress. В этом случае это было бы -z в -avz.

Ответ или решение

Ошибка "connection unexpectedly closed" при использовании команды rsync с различными аргументами может возникать по нескольким причинам, и для их эффективного устранения необходимо внимательно изучить и проанализировать предоставленный вами вывод и контекст использования команды.

1. Понимание команды rsync

Ваш исходный запрос включает команду rsync для копирования файла образа (ISO) с сервера на локальный компьютер:

rsync --progress -avz -e 'ssh -v -i ./.ssh/new_keys node@<ip_address>' node@<ip_address>:~/ubuntu-16.04.1-server-amd64.iso ./Downloads/Ubuntu_Server.iso

2. Анализ вывода

При выполнении команды rsync с параметром -v, {вывод подробной отладки} показывает процесс установки SSH-соединения и последующее выполнение команды rsync на удаленной машине. Однако, на этапе выполнения появляется проблема:

bash: <ip_address>: command not found

Это указывает на то, что система не может найти команду rsync на удаленной машине, что и приводит к ошибке "connection unexpectedly closed."

3. Причина и решение

Основная причина возникновения этой ошибки заключается в том, что rsync не установлен на сервере, с которого вы пытаетесь скопировать файл. Это проверено и подтверждено в вашем выводе:

  • Проверьте установку rsync на удаленной машине, выполнив команду:
ssh -i ./.ssh/new_keys node@<ip_address> 'which rsync'

Если вывод будет пустым, значит, rsync не установлен. Установите rsync на удаленной машине:

sudo apt-get install rsync  # для Ubuntu/Debian

После установки rsync повторите команду rsync.

4. Оптимизация команды

Одним из аспектов, который можно улучшить в вашем варианте команды, является убирание лишних повторов. Например, параметр node@<ip_address> в строке -e не требуется, и его можно удалить:

rsync --progress -avz -e 'ssh -v -i ./.ssh/new_keys' node@<ip_address>:~/ubuntu-16.04.1-server-amd64.iso ./Downloads/Ubuntu_Server.iso

5. Другие потенциальные проблемы

  • Проблемы с правами доступа: Если rsync установлен, но ошибка сохраняется, возможно, у вас нет прав на чтение файла на сервере или запись в целевую директорию на вашем локальном компьютере.

  • Оптимизации батареи: В некоторых случаях, как вы упомянули, использование мобильного SSH-сервера может привести к отключению при оптимизации работы устройства. Убедитесь, что ваше устройство постоянно подключено к источнику питания и что все оптимизации отключены.

  • Сетевые проблемы: Проверьте соединение с сетью. Если у вас возникают задержки или прерывания, они могут вызвать подобные ошибки.

Заключение

Ошибка "connection unexpectedly closed" обычно указывает на проблемы с доступом или конфигурацией, а не на саму команду rsync. Обратите внимание на наличие rsync на удаленной машине, проверьте права доступа и учитывайте возможные факторы, влияющие на соединение. После исправления любых проблем команда должна выполняться корректно, и передача файла пройдет успешно.

Оцените материал
Добавить комментарий

Капча загружается...