как скачать файл с удаленного сервера, подключенного по ssh, с помощью wget?

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

Я подключен к компьютеру своего университета с помощью SSH следующим образом:

sudo ssh [email protected]

Однако, после подключения я не могу скачать никакой файл с сервера, используя wget, следующим образом:

server_user@server:~$ wget http://example.com/somefile

Если я это сделаю, я получаю следующую ошибку:

--2020-07-28 10:14:46--  https://example.com/somefile
Разрешение example.com (example.com)... не удалось: Имя или служба не известны.
wget: не удается разрешить адрес хоста ‘example.com’

Также я не могу установить никакой пакет, используя pip на удаленном сервере. Как мне сделать эти вещи? Заранее спасибо 🙂

PS: конечно, адрес не example.com. Я просто использовал его временно здесь в качестве примера. Это реальный http-адрес, с которого я могу скачать файл локально, используя wget, но делать это на сервере вызывает вышеуказанную ошибку.

Чтобы узнать точную проблему, мне нужны дополнительные детали о сервере. Но по сути, это сводится к проблеме с DNS.

Свяжитесь с администратором этого сервера и упомяните, что есть проблема с DNS и что разрешение записей A и AAAA для example.com не работает.

Временное решение: замените example.com на IP-адрес сервера.
(Запуск ping example.com на вашем компьютере покажет вам ip)

Редактировать: Вы упомянули, что у вас также есть проблема с установкой модулей python (с помощью pip). Это происходит по той же причине, pip будет пытаться скачать их с сайта, о котором он знает только имя хоста, но не ip.

Редактировать 2: Вы также можете провести собственное исследование, почему разрешение не работает, но я бы был осторожен здесь!
Некоторые администраторы любят немного помощи от пользователей, другие могут сильно рассердиться, когда пользователи начинают подсматривать.
Когда в сомнении: не делайте этого.
В любом случае, вот некоторые команды, которые могут предоставить вам больше информации:

  • dig -t A example.com @8.8.8.8 | grep -v '^;' | grep A (должен показать вам ip example.com)
  • dig -t A example.com | grep -v '^;' | grep A (должен показать то же самое)
  • resolvectl status | grep Server (должен показать вам dns-серверы вашего университета)
  • systemctl status systemd-resolved (должен быть активен)
  • journalctl -u systemd-resolve (не должен содержать ошибок)

У сервера нет разрешения DNS – возможно, у него намеренно нет доступа к интернету. Но вы можете использовать scp, чтобы загрузить файлы на сервер.

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

Как загрузить файл на удаленный сервер, используя SSH

Ваша ситуация с загрузкой файлов на удаленный сервер через SSH звучит как системная проблема с разрешением DNS. Чтобы решить эту проблему, рассмотрим несколько возможных подходов и обходных путей.

1. Понимание проблемы

Вы пытаетесь использовать команду wget для загрузки файла, но получаете сообщение об ошибке, связанное с невозможностью разрешить хост. Это, скорее всего, связано с тем, что сервер, на который вы подключаетесь, не имеет доступа к DNS-серверам, что делает его неспособным определить IP-адреса для веб-сайтов.

2. Контакт с администратором сервера

Первый шаг, который следует предпринять, — это обратиться к администратору вашего сервера или в ИТ-отдел университета. Объясните проблему с разрешением доменных имен и попросите их проверить конфигурацию DNS на сервере. Возможно, они намеренно отключили интернет-доступ для повышения безопасности.

3. Временные решения

Если вы не можете дождаться ответов от системного администратора, вы можете использовать некоторые обходные пути.

Использование IP-адреса вместо доменного имени

Определите IP-адрес ресурса, с которого вы хотите скачать файл. Например, выполните команду на своем локальном компьютере:

ping example.com

Это выдаст IP-адрес, которым вы сможете заменить example.com в команде wget. Например:

wget http://<IP-адрес>/somefile

Это должно помочь обойти проблему разрешения хоста.

Использование SCP для работы с локальными файлами

Если вам нужно загрузить файлы на сервер, но у вас нет доступа к интернету, вы можете использовать scp (Secure Copy Protocol) для передачи файлов с вашего локального компьютера на удаленный сервер. Вот пример команды:

scp /path/to/local/file server_user@server:/path/to/remote/directory/

Эта команда позволяет передавать файл с вашего локального компьютера на сервер, не прибегая к интернету.

4. Установка пакетов с помощью pip

Проблемы с установкой пакетов через pip, вероятно, аналогичны. pip также требует доступа к интернет-ресурсам. Вы можете скачать необходимые пакеты на своем локальном компьютере и затем передать их с помощью scp. Ознакомьтесь с документацией pip, чтобы узнать, как можно установить пакеты из локальных файлов.

5. Проверка статуса DNS на сервере

Если у вас есть права на выполнение команд, вы можете выполнить следующие команды, чтобы получить информацию о системе DNS на сервере:

dig -t A example.com @8.8.8.8 | grep -v '^;' | grep A
dig -t A example.com | grep -v '^;' | grep A
resolvectl status | grep Server
systemctl status systemd-resolved
journalctl -u systemd-resolve

Эти команды помогут вам понять, настроены ли DNS-серверы на вашем сервере и работают ли они корректно.

Заключение

Ошибка, с которой вы столкнулись, скорее всего, связана с проблемами разрешения DNS на вашем удаленном сервере, что ограничивает возможность загрузки файлов через wget и установки пакетов через pip. Временные решения, такие как использование IP-адресов и передача файлов через scp, могут помочь вам в данной ситуации. Свяжитесь с администратором сервера для получения помощи, поскольку он сможет предоставить более стабильное и долговременное решение.

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

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