Вопрос или проблема
Когда я выполняю следующую команду на своем локальном компьютере, я могу подключиться (требуется ввести пароль):
sftp -v -oPort=2828 [email protected]
Полученный лог из sftp -v:
OpenSSH_7.6p1 Ubuntu-4ubuntu0.1, OpenSSL 1.0.2n 7 дек 2017
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение параметров для *
debug1: Подключение к SERVER.COM [XX.XX.XX.XX] порт 2828.
debug1: Соединение установлено.
debug1: файл идентификации /home/user/.ssh/id_rsa тип 0
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/user/.ssh/id_rsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/user/.ssh/id_dsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/user/.ssh/id_dsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/user/.ssh/id_ecdsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/user/.ssh/id_ecdsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/user/.ssh/id_ed25519 тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /home/user/.ssh/id_ed25519-cert тип -1
debug1: Локальная версия SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.1
debug1: Удаленная версия протокола 2.0, удаленная версия программного обеспечения OpenSSH_7.2p2 Ubuntu-4ubuntu2.6
debug1: совпадение: OpenSSH_7.2p2 Ubuntu-4ubuntu2.6 соответствует OpenSSH* совместимость 0x04000000
debug1: Аутентификация на SERVER.COM:2828 как 'USER'
debug1: SSH2_MSG_KEXINIT отправлено
debug1: SSH2_MSG_KEXINIT получено
debug1: kex: алгоритм: [email protected]
debug1: kex: алгоритм ключа хоста: ecdsa-sha2-nistp256
debug1: kex: шифр сервер->клиент: [email protected] MAC: <явный> сжатие: нет
debug1: kex: шифр клиент->сервер: [email protected] MAC: <явный> сжатие: нет
debug1: ожидается SSH2_MSG_KEX_ECDH_REPLY
debug1: Ключ хоста сервера: ecdsa-sha2-nistp256 SHA256:xxxxxxxxxx
debug1: Хост '[SERVER.COM]:2828' известен и соответствует ключу хоста ECDSA.
debug1: Найден ключ в /home/user/.ssh/known_hosts:7
debug1: повторный ключ после 134217728 блоков
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидается SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS получено
debug1: повторный ключ после 134217728 блоков
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,password,keyboard-interactive
debug1: Следующий метод аутентификации: publickey
debug1: Предложение открытого ключа: RSA SHA256:iq/xxxxxxxxxxxxxxx /home//.ssh/id_rsa
debug1: Аутентификации, которые могут продолжаться: publickey,password,keyboard-interactive
debug1: Попытка частного ключа: /home/user/.ssh/id_dsa
debug1: Попытка частного ключа: /home/user/.ssh/id_ecdsa
debug1: Попытка частного ключа: /home/user/.ssh/id_ed25519
debug1: Следующий метод аутентификации: keyboard-interactive
Пароль:
Когда я пробую то же самое на только что развернутом сервере ubuntu, я получаю следующую ошибку от точно такой же команды:
OpenSSH_7.2p2 Ubuntu-4ubuntu2.6, OpenSSL 1.0.2g 1 мар 2016
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение параметров для *
debug1: Подключение к SERVER.COM [XX.XX.XX.XX] порт 2828.
debug1: подключение к адресу XX.XX.XX.XX порт 2828: Время соединения истекло
ssh: подключение к хосту SERVER.COM порт 2828: Время соединения истекло
Невозможно прочитать пакет: Соединение сброшено партнером
Я следовал нескольким инструкциям онлайн, но ничего не сработало.
Пример: Ошибка SFTP – Невозможно прочитать пакет: соединение сброшено партнером
Редактировать: У меня нет доступа к серверу, к которому я пытаюсь подключиться по sftp, он не мой.
Сложно сказать, возможно, неверные маршруты? Если соединение полностью истекло, таблица маршрутизации некорректна или сервер просто блокирует ваши пакеты. Проверьте вашу сетевую конфигурацию, затем ваши маршруты, а затем можете переходить к логам SSH, hosts.{allow,deny} и т.д.
Я разобрался с поддержкой моего хостинг-провайдера.
Проблема в том, что у них есть группы безопасности, которые блокируют все порты, если вы их не открываете. Я не открыл порт 2828.
Для меня это все еще немного загадка, так как я думал, что sftp -oPort=2828 будет работать по порту 2828 на целевом сервере, в то время как на моей стороне это все еще порт 22. Но это решило проблему. Спасибо людям, которые пытались ответить на мой вопрос.
Ответ или решение
Ошибка sftp Couldn't read packet: Connection reset by peer
может возникнуть по различным причинам при попытке установить SFTP-соединение с удаленным сервером. На основании предоставленной информации можно выделить несколько ключевых аспектов, которые помогут в понимании данной проблемы и ее решении.
1. Разновидности проблем с соединением
На первом этапе важно различать две основные категории ошибок, с которыми вы можете столкнуться:
- Ошибка времени ожидания соединения: Это происходит, когда клиент не может установить соединение с сервером за установленные временные интервалы (например,
Connection timed out
в вашем выводе). Это чаще всего указывает на проблемы с маршрутизацией или блокировкой портов на уровне сети. - Сброс соединения: Ошибка
Connection reset by peer
указывает на то, что соединение было неожиданно закрыто сервером. Это может быть вызвано настройками безопасности на сервере или локальными сетевыми правилами.
2. Анализ логов подключения
Ваши логи показывают, что с локальной машины вы успешно подключаетесь к серверу, в то время как на новом сервере вы сталкиваетесь с таймаутом. Это может указывать на то, что проблем с клиентским программным обеспечением у вас нет, и вы в основном должны сосредоточиться на сетевых настройках вашего нового сервера.
3. Возможные причины ошибки
- Блокировка порта на сервере: Как выяснилось, сервер вашего хостера использует группы безопасности, которые по умолчанию блокируют все порты, кроме тех, которые вы явно открыли. Это наиболее вероятная причина возникновения ошибки, когда вы пытались подключиться к порту 2828, который был закрыт для входящих соединений.
- Неправильная маршрутизация: Если ваша новая машина находится в другой сети или дата-центре, могут возникнуть проблемы с маршрутизацией пакетов к серверу.
- Настройки брандмауэра: Локальные или сетевые брандмауэры могут блокировать ваш трафик, что также необходимо учитывать.
4. Рекомендации по решению проблемы
- Проверка правил безопасности: Убедитесь, что порт 2828 открыт на вашем новом сервере. Это необходимо сделать в настройках групп безопасности вашего хостера.
- Тестирование соединения: Используйте утилиты, такие как
telnet
илиnc (netcat)
, для проверки доступности порта 2828 на сервере:telnet SERVER.COM 2828
или
nc -zv SERVER.COM 2828
Это позволит вам диагностировать, доступен ли порт из вашей сети.
- Проверка конфигурации сети: Убедитесь, что все маршруты настроены правильно и нет ограничений на уровне маршрутизаторов или брандмауэров.
- Документация хостера: Оцените официальную документацию вашего хостинга для дополнительных инструкций и рекомендаций по настройкам сети и безопасности.
Вывод
Каждая из перечисленных причин может привести к ошибке sftp Couldn't read packet: Connection reset by peer
. На основе ваших логов и результатов подключения с других машин, вы правильно определили проблему с группами безопасности. Убедитесь, что нужные порты открыты, и всегда полезно поддерживать связь с технической поддержкой вашего хостера для быстрого разрешения подобных вопросов.