Як вказати ім'я користувача та пароль для wget?


157

Я намагався підключитися до сервера через wget:

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

Але wget відповідає: недійсний порт

Я знаю, що сервер приймає вхідний трафік через порт 80. Як я можу виправити цю проблему?


Я не думаю, що ви можете надійно використовувати користувача: передайте синтаксис @ ім’я там; 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 з'єднань.


48
Я вважаю за краще --ask-passwordваріант, описаний у відповіді Набіла Кадімі. У ньому ви помітили пароль непомітно в іншому рядку і уникаєте його зберігати в історії оболонки.
Кевін

8
@Kevin Ви можете уникнути збереження його в історії оболонок, запустивши рядок принаймні з одного пробілу (як показано Nabil ). Якщо пароль / ресурс є чутливим, то вам слід більше турбуватися про незашифрований HTTP / FTP / будь-яке з'єднання, ніж збереження його на диску.
Лекенштейн

Я погоджуюся з тим, що питання незашифрованого пароля є важливішим у деяких випадках, ніж історія оболонки, але відповідь також корисна для безпечних протоколів. Крім того, іноді НЕ доводиться турбуватися більше про шпигунів, які мають доступ до вашого комп'ютера, ніж онлайн-шпигунів (які не цікавляться вмістом, до якого ви звертаєтесь, або про який вам все одно). Відповідь --ask-пароль нижче, очевидно, краще для інтерактивного використання, тоді як відповідь --password тут простіша для автоматизації. Коментар Ixgr про .wgetrc та chmod також цікавий в деяких випадках.
youen

Як я розумію посібник, пропуск не трактується як порт. "Ви також можете кодувати своє ім'я користувача та пароль у межах URL: http://user:password@host/path" "- керівництво
Тим

104

У вас є три варіанти, і тут немає жодного конкретного порядку, крім відчуття кишок:

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 розпочав завантаження.


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.


2
Це не зовсім правильно: man wgetвказує на те, що --user та --password є дійсними параметрами, які можуть бути замінені --http-користувачем або --ftp-паролем
Чарльз Грін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.