Come posso fornire un nome utente e una password per wget?


157

Ho provato a connettermi a un server tramite wget:

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

Ma wget risponde: porta non valida

So che il server accetta il traffico in entrata sulla porta 80. Come posso risolvere questo problema?


Non credo che tu possa usare in modo affidabile l'utente: sintassi pass @ name lì; wgetha invece opzioni a riga di comando separate per quelle, quindi probabilmente sta analizzando ingenuamente la stringa dopo il :numero di porta.
Geekosaur,

Risposte:


198

Wget interpreta <pass>@serveraddresscome porta. Per specificare un nome utente e una password, utilizzare le opzioni --usere --password:

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

Da man wget:

--user=user

--password=password

Specificare il nome utente utente e la password la password sia per FTP e HTTP recupero dei file. Questi parametri possono essere sovrascritti usando le opzioni --ftp-usere --ftp-passwordper le connessioni FTP e le opzioni --http-usere --http-passwordper le connessioni HTTP.


49
Preferisco l' --ask-passwordopzione descritta dalla risposta di Nabil Kadimi. Ti consente di inserire la password in modo invisibile su un'altra riga ed evita di memorizzarla nella cronologia della shell.
Kevin,

8
@Kevin Puoi evitare di memorizzarlo nella cronologia della shell avviando la linea con almeno uno spazio (come mostrato da Nabil ). Se la password / risorsa è sensibile, dovresti preoccuparti di più della connessione HTTP / FTP / crittografata non crittografata rispetto alla memorizzazione sul disco.
Lekensteyn,

Sono d'accordo sul fatto che il problema della password non crittografata sia più importante in alcuni casi rispetto alla cronologia della shell, ma la risposta è utile anche per i protocolli sicuri. Inoltre, a volte devi preoccuparti più delle spie che hanno accesso al tuo computer che delle spie online (che non sono interessate dal contenuto a cui accedi o per cui non ti interessa). La risposta --ask-password di seguito è chiaramente migliore per l'uso interattivo, mentre la risposta --password qui è più semplice per l'automazione. Anche il commento di Ixgr su .wgetrc e chmod è interessante in alcuni casi.
Youen

Come ho capito il manuale, pass non è interpretato come porta. "Puoi anche codificare il tuo nome utente e password all'interno di un URL: http://user:password@host/path" "- manuale
Tim

104

Hai 3 opzioni e qui non ci sono in un ordine specifico diverso dalla sensazione di coraggio:

1 / La password è visibile a chiunque (utilizzando il comando history)

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

La password sarà visibile anche in ps, top, htop e simili.

2 / La password è visibile a chiunque guardi alle tue spalle

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

Nota lo spazio bianco prima del comando, impedisce di salvarlo nella cronologia.

La password sarà visibile anche in ps, top, htop e simili.

3 / La password non è visibile a nessuno incluso te

wget --user=remote_user --ask-password ftp://ftp.example.com/file.ext
Password for user `remote_user': [SECRET (not visible)]

6
Sebbene non sia visibile nella storia, è visibile a tutti coloro che eseguono un comando ps, top, htop o simile mentre il processo è in esecuzione.

4
@AbdennourTOUMI Perché disabilitare i controlli dei certificati, soprattutto se si invia una password con la richiesta? Questo non è assolutamente consigliabile in generale. Per quanto riguarda "nascondere" la password nei log o / proc, la manpage di wget offre un'opzione aggiuntiva: "Per impedire la visualizzazione delle password, memorizzale in .wgetrc o .netrc e assicurati di proteggere quei file da altri utenti con "chmod". "
lxgr,

2
Se --ask-passwordnon è disponibile o non si desidera digitare la password ogni volta, wget -i link.txtpuò aiutare, dove link.txtcontieneftp://remote_user:SECRET@ftp.example.com/file.ext
tehnicaorg

3

Puoi anche memorizzare il nome utente e la password nel file ~/.wgetrc e modificare le autorizzazioni di quel file in modo che solo il tuo utente possa leggerlo:

File ~/.wgetrc:

user=john
password=SEcrEt

... e poi

chmod 600 ~/.wgetrc

Si noti, tuttavia, che l'utente rootpuò comunque sbirciare nel file e leggere la password.

Dalla manpage :

Per impedire la visualizzazione delle password, utilizzare --use-askpasso archiviarle in .wgetrco .netrce assicurarsi di proteggere tali file da altri utenti con "chmod". Se le password sono davvero importanti, non lasciarle nemmeno in quei file --- modifica i file ed eliminali dopo che Wget ha iniziato il download.


0

È possibile fornire credenziali di autenticazione tramite --user=USERNAMEe --password=PASSWORD; in base a man wget, il comando può essere sovrascritto usando la connessione --http-user=USERNAMEe --http-password=PASSWORDper http e la connessione --ftp-use=USERNAMEe --ftp-password=PASSWORDper ftp .


-1

Il comando avrebbe potuto usare --http-usere --http-passwordinvece di --usere --password. In caso di ftprichiesta le opzioni sono --ftp-usere --ftp-password.


2
Questo non è del tutto corretto: man wgetindica che --user e --password sono opzioni valide, che possono essere sovrascritte da --http-user o --ftp-password
Charles Green
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.