Jak podać nazwę użytkownika i hasło do wget?

157

Próbowałem połączyć się z serwerem za pomocą wget:

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

Ale wget odpowiada: nieprawidłowy port

Wiem, że serwer akceptuje ruch przychodzący na porcie 80. Jak mogę rozwiązać ten problem?

pschmidt
źródło
Nie sądzę, abyś mógł niezawodnie korzystać z tego użytkownika: podaj tam składnię @ name; wgetzamiast tego ma dla nich osobne opcje wiersza poleceń, więc prawdopodobnie naiwnie analizuje ciąg po :numerze portu.
geekozaur

Odpowiedzi:

198

Wget interpretuje <pass>@serveraddressjako port. Aby podać nazwę użytkownika i hasło, użyj przełączników --useri --password:

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

Od man wget:

--user=user

--password=password

Określ nazwę użytkownika użytkownika i hasło hasło zarówno dla FTP i pobieranie plików HTTP. Parametry te można zastąpić za pomocą opcji --ftp-useri --ftp-passworddla połączeń FTP --http-useroraz --http-passwordopcji i dla połączeń HTTP.

Lekensteyn
źródło
48
Wolę --ask-passwordopcję opisaną w odpowiedzi Nabila Kadimi. Wprowadza hasło niewidocznie w innym wierszu i pozwala uniknąć przechowywania go w historii powłoki.
Kevin
8
@Kevin Możesz uniknąć przechowywania go w historii powłoki, rozpoczynając linię co najmniej jedną spacją (jak pokazuje Nabil ). Jeśli hasło / zasób jest wrażliwy, powinieneś bardziej martwić się o niezaszyfrowane połączenie HTTP / FTP / cokolwiek innego niż przechowywanie go na dysku.
Lekensteyn,
Zgadzam się, że problem nieszyfrowanego hasła jest w niektórych przypadkach ważniejszy niż historia powłoki, ale odpowiedź jest również przydatna w przypadku bezpiecznych protokołów. Czasami też musisz martwić się bardziej o szpiegów, którzy mają dostęp do twojego komputera, niż szpiedzy online (którzy nie są zainteresowani treściami, do których uzyskujesz dostęp lub których nie obchodzi). Poniższa odpowiedź --ask-password jest wyraźnie lepsza do użytku interaktywnego, podczas gdy odpowiedź --password jest łatwiejsza dla automatyzacji. Komentarz Ixgr na temat .wgetrc i chmod jest również interesujący w niektórych przypadkach.
youen
Jak rozumiem instrukcję, hasło nie jest interpretowane jako port. „Możesz także zakodować swoją nazwę użytkownika i hasło w adresie URL: http://user:password@host/path” ”- ręcznie
Tim
104

Masz 3 opcje, a tutaj nie ma określonej kolejności poza poczuciem odwagi:

1 / Hasło jest widoczne dla każdego (za pomocą polecenia history)

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

Hasło będzie również widoczne w ps, top, htop i podobnych.

2 / Hasło jest widoczne dla każdego, kto patrzy za siebie

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

Zwróć uwagę na biały znak przed poleceniem, ponieważ zapobiega zapisaniu go w twojej historii.

Hasło będzie również widoczne w ps, top, htop i podobnych.

3 / Hasło nie jest widoczne dla nikogo, w tym ciebie

wget --user=remote_user --ask-password ftp://ftp.example.com/file.ext
Password for user `remote_user': [SECRET (not visible)]
Nabil Kadimi
źródło
6
Chociaż nie jest to widoczne w historii, jest widoczne dla wszystkich, którzy wykonują polecenie ps, top, htop lub podobne podczas działania procesu.
4
@AbdennourTOUMI Dlaczego miałbyś wyłączyć sprawdzanie certyfikatów, szczególnie jeśli wysyłasz hasło wraz z żądaniem? Zasadniczo nie jest to zalecane. Jeśli chodzi o „ukrywanie” hasła w logach lub / proc, strona wget daje dodatkową opcję: „Aby zapobiec wyświetlaniu haseł, przechowuj je w .wgetrc lub .netrc i upewnij się, że chronisz te pliki przed inni użytkownicy z „chmod”. ”
lxgr
2
Jeśli --ask-passwordnie jest dostępny lub nie chcesz wpisywać hasła za każdym razem, wget -i link.txtmoże pomóc, gdzie link.txtzawieraftp://remote_user:[email protected]/file.ext
tehnicaorg
3

Możesz także zapisać nazwę użytkownika i hasło w pliku ~/.wgetrc oraz zmienić uprawnienia do tego pliku, aby tylko użytkownik mógł go odczytać:

Plik ~/.wgetrc:

user=john
password=SEcrEt

... i wtedy

chmod 600 ~/.wgetrc

Pamiętaj jednak, że użytkownik rootnadal może zajrzeć do tego pliku i odczytać hasło.

Z strony podręcznika :

Aby zapobiec wyświetlaniu haseł, użyj --use-askpasslub przechowuj je w .wgetrclub .netrci upewnij się, że chronisz te pliki przed innymi użytkownikami "chmod". Jeśli hasła są naprawdę ważne, nie zostawiaj ich również w tych plikach --- edytuj pliki i usuń je po rozpoczęciu pobierania przez Wget.

PerlDuck
źródło
0

Możesz podać dane uwierzytelniające za pośrednictwem --user=USERNAMEi --password=PASSWORD; na podstawie man wgetpolecenia można zastąpić za pomocą połączenia --http-user=USERNAMEi --http-password=PASSWORDdla połączenia http oraz połączenia --ftp-use=USERNAMEi --ftp-password=PASSWORDdla ftp .

Esmaeil MIRZAEE
źródło
-1

Komenda mogła zostać użyta, --http-usera --http-passwordzamiast --useri --password. W przypadku ftpżądania dostępne są opcje --ftp-useri --ftp-password.

Mradul
źródło
2
Nie jest to całkowicie poprawne: man wgetwskazuje, że --user i --password są prawidłowymi opcjami, które mogą zostać zastąpione przez --http-user lub --ftp-password
Charles Green