Вопрос или проблема
Запускаю Ubuntu 22.04 в качестве сервера и сталкиваюсь с проблемой при использовании SCP. Хотя я могу зайти по SSH без каких-либо проблем, попытка передать файлы через SCP [с компьютера под управлением Windows 10 в той же сети] приводит к ошибке “Connection refused”.
> scp -vvvv -P 22 "Pokémon Diamond & Pearl Sinnoh Map.jpg" [email protected]:./
Выполнение: программа ssh.exe хост 192.168.0.110, пользователь ubuntu, команда scp -v -t ./
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug3: Невозможно открыть файл:C:/Users/Dark/.ssh/config ошибка:2
debug3: Невозможно открыть файл:C:/ProgramData/ssh/ssh_config ошибка:2
debug2: resolve_canonicalize: имя хоста 192.168.0.110 это адрес
debug2: ssh_connect_direct
debug1: Подключение к 192.168.0.110 [192.168.0.110] порт 22.
debug3: завершение соединения - ОШИБКА: асинхронный ввод-вывод завершился с ошибкой: 10061, io:0000020BB6497460
debug1: подключение к адресу 192.168.0.110 порт 22: Connection refused
ssh: подключение к хосту 192.168.0.110 порт 22: Connection refused
соединение потеряно
Я попробовал следующее:
- Открыть порт 22
$ sudo ufw allow 22
$ sudo ufw status
Статус: неактивен
- Сбросить .bashrc
cp /etc/skel/.bashrc ~/
- Проверить статус SSH-демона
$ systemctl status ssh
● ssh.service - OpenBSD Secure Shell сервер
Загружено: загружено (/lib/systemd/system/ssh.service; включено; предустановлено поставщиком: включено)
Активно: активно (работает) с Суб. 27 янв. 2024 21:36:24 JST; 3с назад
Документы: man:sshd(8)
man:sshd_config(5)
Процесс: 28095 ExecStartPre=/usr/sbin/sshd -t (код=завершен, статус=0/УСПЕХ)
Основной PID: 28096 (sshd)
Задачи: 1 (лимит: 1660)
Память: 1.6M
CPU: 65ms
CGroup: /system.slice/ssh.service
└─28096 "sshd: /usr/sbin/sshd -D [listener] 0 из 10-100 запусков"
27 янв. 21:36:24 ubuntu systemd[1]: Запуск OpenBSD Secure Shell сервера...
27 янв. 21:36:24 ubuntu sshd[28096]: Сервер слушает на 0.0.0.0 порт 22.
27 янв. 21:36:24 ubuntu sshd[28096]: Сервер слушает на :: порт 22.
27 янв. 21:36:24 ubuntu systemd[1]: Запущен OpenBSD Secure Shell сервер.
Я понимаю, что SCP работает, используя SSH как канал, верно? Или я что-то упускаю?
Правка:
Я проверил и порты 22 и 8022 [на основе информации, которую я нашел в интернете], но ни один из них не работает. Ниже приведена команда SCP, которую я выполнил для порта 8022:
scp -vvvv -P 8022 "Pokémon Diamond & Pearl Sinnoh Map.jpg" [email protected]:./
Обновление [по запросу @user68186]:
Я использую как ssh
, так и scp
через cmd
в Windows Terminal
.
> ssh [email protected]
[email protected]'s пароль:
Добро пожаловать в Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-1037-raspi aarch64)
* Документация: https://help.ubuntu.com
* Управление: https://landscape.canonical.com
* Поддержка: https://ubuntu.com/advantage
Информация о системе на Суб. 27 янв. 22:58:44 JST 2024
Нагрузка системы: 0.0068359375 Температура: 48.7 C
Использование /: 58.7% из 28.94GB Процессы: 280
Использование памяти: 47% Пользователи: 2
Использование свопа: 11% IPv4 адрес для wlan0: 192.168.0.110
* Четко ограниченный Kubernetes делает защиту edge и IoT безопасной. Узнайте, как MicroK8s
поднял планку для простого, надежного и безопасного развертывания K8s кластера.
https://ubuntu.com/engage/secure-kubernetes-at-the-edge
Расширенное обслуживание безопасности для приложений не включено.
254 обновления могут быть применены немедленно.
175 из этих обновлений - стандартные обновления безопасности.
Чтобы увидеть эти дополнительные обновления, запустите: apt list --upgradable
30 дополнительных обновлений безопасности могут быть применены с помощью ESM Apps.
Узнайте больше о включении службы ESM Apps на https://ubuntu.com/esm
Последний вход: Суб. 27 янв. 19:29:14 2024 с 192.168.0.102
Заключительное обновление:
Учитывая значительное время, потраченное на устранение проблемы с передачей SCP
, и учитывая, что SFTP
и Samba
являются жизнеспособными альтернативами, которые уже работают, я решил использовать их вместо этого и потратить время на что-то другое. Я благодарен всем за их идеи и помощь до сих пор. Не стесняйтесь продолжать исследовать дальше, если хотите. Спасибо!
У меня была такая же проблема, и вот что исправило ситуацию.
https://serverfault.com/questions/210408/cannot-ssh-debug1-expecting-ssh2-msg-kex-dh-gex-reply
Изменение MTU на меньший размер позволило SCP работать. Возможно, какое-то промежуточное устройство в сети неправильно обрабатывало большие пакеты.
sudo ip li set mtu 1200 dev eth0
Попробуйте другие значения MTU, если это не сработает. Замените eth0
на фактическое имя интерфейса (полученное с помощью ip a
)
Ответ или решение
Судя по вашему описанию, вы правильно настраивали SSH, и, поскольку использовали SCP, ошибки не должны были возникать, так как SCP работает по протоколу SSH. Однако, если вы получаете ошибку "Connection refused", это может указывать на несколько возможных причин.
Вот шаги, которые вам следует предпринять для диагностики и устранения проблемы:
1. Проверьте службу SSH
Вы уже проверили, что служба SSH активна и работает. Вы можете использовать команду:
sudo systemctl status ssh
Убедитесь, что статус указан как "active (running)".
2. Проверьте настройки конфигурации SSH
Откройте файл конфигурации SSH для редактирования:
sudo nano /etc/ssh/sshd_config
Убедитесь, что следующие параметры установлены правильно:
- Убедитесь, что строка
PermitRootLogin
не установлена вno
(если вы хотите разрешить доступ root) - Запись
Port 22
должна быть активна и не закомментирована. - Убедитесь, что
PasswordAuthentication yes
разрешено, если вы используете пароли для аутентификации.
После внесения изменений перезапустите SSH:
sudo systemctl restart ssh
3. Проверьте брандмауэр
Согласно вашему выводу, брандмауфер UFW отключен. Если вы используете другой брандмауфер, например, iptables, убедитесь, что он не блокирует порт 22. Для проверки iptables выполните:
sudo iptables -L -n
4. Проверьте MTU
Как вы отметили в последнем обновлении, существует вероятность проблем с MTU. Чтобы попробовать это решение, выполните следующую команду, заменив eth0
на адаптер, который вы используете:
sudo ip li set mtu 1200 dev eth0
Вы также можете поэкспериментировать с другими значениями MTU, например, 1400 или 1500, для нахождения оптимального.
5. Протестируйте соединение
Попробуйте выполнить SCP снова с полным выводом отладки:
scp -vvv "Pokémon Diamond & Pearl Sinnoh Map.jpg" [email protected]:./
Это поможет вам увидеть, где именно происходит сбой.
6. Альтернативные методы
Если проблема не решается, вы можете временно использовать SFTP или Samba, как вы и упомянули. SFTP работает на том же порту SSH и часто является более удобным методом для передачи файлов.
Заключение
Если вы все еще сталкиваетесь с проблемами, несмотря на эти шаги, возможно, стоит проверить сетевые настройки на вашей Windows машине, а также убедиться, что ни один антивирус или дополнительный брандмауэр не блокирует SCP-запросы. Также попробуйте выполнить SCP из другой ОС, например, с другого Linux-устройства, для исключения проблем с клиентом Windows.
Если же все предложенные решения неимоверно занимают много времени и сил, можно обратиться в специализированные форумы или сообщества для дальнейшей помощи, так как проблема может быть нестандартной.