Как мне предоставить имя пользователя и пароль для wget?

157

Я пытался подключиться к серверу через wget:

wget http://<user>:<pass>@serveradress

Но wget отвечает: неверный порт

Я знаю, что сервер принимает входящий трафик через порт 80. Как я могу решить эту проблему?

pschmidt
источник
Я не думаю, что вы можете надежно использовать пользователя: синтаксис pass @ name там; wgetвместо этого имеет отдельные параметры командной строки, поэтому, вероятно, наивно анализирует строку после :номера порта.
geekosaur

Ответы:

198

Wget интерпретирует <pass>@serveraddressкак порт. Чтобы указать имя пользователя и пароль, используйте --userи --passwordпереключатели:

wget --user user --password pass http://example.com/

От man wget:

--user=user

--password=password

Укажите имя пользователя, пароль и пароль для получения файлов по FTP и HTTP. Эти параметры могут быть переопределены с помощью параметров --ftp-userи --ftp-passwordдля подключений FTP и параметров --http-userи --http-passwordдля подключений HTTP.

Lekensteyn
источник
49
Я предпочитаю --ask-passwordвариант, описанный в ответе Набиля Кадими. Он позволяет вам невидимо вводить пароль в другой строке и избегать его сохранения в истории вашей оболочки.
Кевин
8
@Kevin Вы можете избежать сохранения этого в истории оболочки, начав строку хотя бы с одного пробела (как показано Набилем ). Если пароль / ресурс чувствителен, вам следует больше беспокоиться о незашифрованном HTTP / FTP / любом другом соединении, чем о сохранении его на вашем диске.
Лекенштейн
Я согласен с тем, что проблема с незашифрованным паролем важнее в некоторых случаях, чем история оболочки, но ответ также полезен для безопасных протоколов. Кроме того, иногда вам ДЕЙСТВИТЕЛЬНО приходится беспокоиться о шпионах, которые имеют доступ к вашему компьютеру, а не о шпионах онлайн (которых не интересует контент, к которому вы обращаетесь или который вас не волнует). Ответ --ask-password, приведенный ниже, явно лучше для интерактивного использования, тогда как ответ --password здесь проще для автоматизации. Комментарий Ixgr о .wgetrc и chmod также интересен в некоторых случаях.
youen
Как я понимаю руководство, проход не интерпретируется как порт. "Вы также можете закодировать свое имя пользователя и пароль в URL: http://user:password@host/path" "- руководство
Тим
104

У вас есть 3 варианта, и здесь нет ни одного конкретного порядка, кроме чувства мужества:

1 / Пароль виден всем (используя команду history)

wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext

Пароль также будет виден в ps, top, htop и аналогичных.

2 / Пароль виден всем, кто смотрит за вашими плечами

 wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext

Обратите внимание на пробел перед командой, он не позволяет сохранить его в вашей истории.

Пароль также будет виден в ps, top, htop и аналогичных.

3 / Пароль не виден никому, включая вас

wget --user=remote_user --ask-password ftp://ftp.example.com/file.ext
Password for user `remote_user': [SECRET (not visible)]
Набиль Кадими
источник
6
Хотя это не отображается в истории, оно видно всем, кто выполняет команду ps, top, htop или аналогичную во время выполнения процесса.
4
@AbdennourTOUMI Зачем вам отключать проверки сертификатов, особенно если вы отправляете пароль с запросом? Это определенно не рекомендуется в целом. Что касается «сокрытия» пароля в журналах или / proc, то на странице wget есть дополнительная опция: «Чтобы пароли не были видны, сохраните их в .wgetrc или .netrc и убедитесь, что эти файлы защищены от другие пользователи с "chmod". "
lxgr
2
Если --ask-passwordнет в наличии или вы не хотите вводить пароль каждый раз, wget -i link.txtможете помочь, где link.txtсодержитсяftp://remote_user:SECRET@ftp.example.com/file.ext
tehnicaorg
3

Вы также можете сохранить имя пользователя и пароль в файле ~/.wgetrc и изменить права доступа к этому файлу, чтобы его мог прочитать только ваш пользователь:

Файл ~/.wgetrc:

user=john
password=SEcrEt

... а потом

chmod 600 ~/.wgetrc

Обратите внимание, однако, что пользователь rootвсе еще может заглянуть в этот файл и прочитать пароль.

Из справочной страницы :

Чтобы предотвратить просмотр паролей, используйте --use-askpassили сохраните их в .wgetrcили .netrc, и обязательно защитите эти файлы от других пользователей "chmod". Если пароли действительно важны, не оставляйте их в этих файлах - отредактируйте файлы и удалите их после того, как Wget начал загрузку.

PerlDuck
источник
0

Вы можете предоставить учетные данные аутентификации через --user=USERNAMEи --password=PASSWORD; на основе man wget, команда может быть отменена с помощью --http-user=USERNAMEи --http-password=PASSWORDдля HTTP соединения и --ftp-use=USERNAMEи --ftp-password=PASSWORDдля FTP соединения.

Эсмаил МИРЗАЕЕ
источник
-1

Команду могли использовать --http-userи --http-passwordвместо --userи --password. В случае ftpзапроса варианты --ftp-userи --ftp-password.

Mradul
источник
2
Это не совсем верно: man wgetуказывает, что --user и --password являются допустимыми параметрами, которые могут быть переопределены --http-user или --ftp-password
Charles Green