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.