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

sudo ssh server@A.B.C.D

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

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

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

--2020-07-28 10:14:46--  https://example.com/somefile
Resolving example.com (example.com)... failed: Name or service not known.
wget: unable to resolve host address ‘example.com’

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

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

0
Ruchit 28 Июл 2020 в 07:44

2 ответа

Чтобы определить точную проблему, мне нужны дополнительные сведения о сервере. Но на самом деле все сводится к проблеме с 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 (не должно содержать ошибок)
0
Garo 28 Июл 2020 в 10:37
В зависимости от того, что сервер должен делать, также возможно, что он находится в частной подсети с DNS-сервером, который намеренно разрешает только внутренние домены.
 – 
Ulrich Schwarz
28 Июл 2020 в 10:07
Ульрих Шварц, безусловно, прав. Но меня бы удивило, если бы это было здесь. (Я сам являюсь администратором в университете. Все наши серверы, к которым могут получить доступ обычные студенты бакалавриата, разрешают внешние имена по ssh)
 – 
Garo
28 Июл 2020 в 10:23

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

0
mifritscher 29 Июл 2020 в 00:06