Невозможно передать файл из подсистемы windows для linux на удаленный сервер

В настоящее время я работаю над ноутбуком windows 10. Я установил в него подсистему ubuntu (вместо PUTTY) для доступа к удаленному серверу. Когда я запускаю подсистему ubuntu из стартового меню windows, она открывается с помощью командной строки user@PC0BCD-PC

Удаленный сервер также является Linux-сервером.

Кроме того, я подключен к VPN. Если я не подключусь к VPN, я не смогу войти на удаленный сервер.

Итак, я хотел бы передать файл из моей локальной подсистемы windows ubuntu на удаленный сервер

Итак, я попробовал команду ниже и получил ошибку, как показано ниже

scp /mnt/c/Users/test/Downloads/DC_cond.csv test@172.XX.YYY.Z:/home/test/cond_occ.csv

ssh: connect to host 172.XX.YYY.Z port 22: Resource temporarily unavailable
lost connection

/mnt/c/Users/..... указывает путь в моей локальной системе, в то время как test@172.XX.YYY.Z указывает адрес моего удаленного сервера.

когда я набираю telnet 172.XX.YYY.Z 22 в моем WSL, он просто говорит Попробуйте 172.XX.YYY.Z, тогда как когда я SSH вставляю удаленный сервер и набираю telnet 172.XX.YYY.Z 22, он выдает вывод для команды telnet

, но не может передавать файлы с удаленного сервера в локальную систему также и на локальный.

Может ли он мне помочь?

2
задан 29 March 2021 в 10:29

2 ответа

Из комментариев мы обнаружили, что «основная проблема» заключалась в том, что вы могли получить доступ к серверу, когда ssh , а оттуда вы могли scp . Но при попытке scp напрямую на сервер из сеанса WSL в VPN он оказался недоступен.

Для будущих читателей может быть несколько (других) причин, по которым scp не работает, когда ssh работает:

  • Возможно, проблема с сервером. Сообщается, что на некоторых серверах, на которых работают определенные версии libssh2 , есть проблема с scp , хотя это уже исправлено на некоторое время, поэтому увидеть это будет редко.

  • Файлы запуска оболочки на сервере могут выдавать какой-то текст. Это будет работать с интерактивным сеансом ssh , но вызовет проблемы с scp . Однако сообщения об ошибках, которые вы видите, не совсем соответствуют этому.

Оказывается, похоже, что вы использовали имя хоста с ssh , но вы пытались использовать IP-адрес с scp . Имя хоста сработало, потому что в вашем ~ / .ssh / config :

Host server_1
Hostname 172.xx.yyy.z
User test
ProxyCommand ssh -q -a pitunnel -W %h:%p
TCPKeepAlive yes

Это позволило ssh server_1 использовать ProxyCommand для подключения через сервер в VPN с именем pitunnel к server_1 .

Хотя вы уже обнаружили, что вы можете просто использовать имя хоста server_1 с scp , чтобы заставить его работать (поскольку он также читает тот же ~ / .ssh / config ), вы также должны иметь возможность изменить конфигурацию, чтобы разрешить доступ к имени хоста и IP. Просто измените первую строку на:

Host server_1 172.xx.yyy.z

Это указывает ssh и scp использовать указанные ниже настройки для как имени хоста, так и IP.

Еще одно примечание.Вы разумно скрываете IP-адрес, но в этом случае, скорее всего, нет необходимости. Если xx находится в диапазоне от 16 до 31, то IP-адрес находится в так называемой «частной сети Интернет». Это похоже на адреса типа 192.168.1.1 , которые вы видите на своем домашнем маршрутизаторе. Все могут использовать одни и те же диапазоны IP-адресов, поскольку они не маршрутизируются через общедоступный Интернет.

Вот почему вы должны подключиться к VPN и использовать прокси для доступа к нему. Во-первых, его нет в общедоступном Интернете.

2
ответ дан 23 April 2021 в 23:29

openssh-server может не быть установлен на сервере, или порт 22 может быть заблокирован сервером или маршрутизатором VPN.

Чтобы проверить последнее, вы можете изменить порт для использования в конфигурации openssh-server на сервере, просто добавьте / замените конфигурацию порта на / etc / ssh / sshd_config

Port 80

или на любой другой порт, который вы уверены, что это не блокируется брандмауэром.

Вместо ssh -p 80 @

Вы также можете использовать любой другой порт (просто замените 80 на другой приемлемый порт), но порт 80, скорее всего, не ограничен.

Если у вас уже есть привязка службы к порту 80, вы столкнетесь с проблемами при изменении конфигурации. Чтобы перечислить все используемые порты на сервере, вы можете использовать ss или netstat , как описано Пьером АЛЬБАРДЕ в его комментарии.

1
ответ дан 23 April 2021 в 23:29

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

Похожие вопросы: