Вопрос или проблема
Я подключен к компьютеру своего университета с помощью 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
, могут помочь вам в данной ситуации. Свяжитесь с администратором сервера для получения помощи, поскольку он сможет предоставить более стабильное и долговременное решение.