How do I provide a username and password to wget?
Wget interprets <pass>@serveraddress
as port. To specify a username and password, use the --user
and --password
switches:
wget --user user --password pass http://example.com/
From man wget
:
--user=user
--password=password
Specify the username user and password password for both FTP and HTTP file retrieval. These parameters can be overridden using the
--ftp-user
and--ftp-password
options for FTP connections and the--http-user
and--http-password
options for HTTP connections.
You have 3 options here. They are in no specific order other than gut feeling:
1. Password is visible to anyone (using the command history
)
wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext
The password will also be visible in ps
, top
, htop
and similar.
2. Password is visible to anyone looking behind your shoulders
wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext
Notice the white space before the command, it prevents saving it to your history.
The password will also be visible in ps
, top
, htop
and similar.
3. Password is not visible to anyone including you
wget --user=remote_user --ask-password ftp://ftp.example.com/file.ext
Password for user `remote_user': [SECRET (not visible)]
You can also store the username and password in the file ~/.wgetrc
and change the permissions of that file so that only your user can
read it:
File ~/.wgetrc
:
user=john
password=SEcrEt
... and then
chmod 600 ~/.wgetrc
Note, however, that user root
can still peek into that file and
read the password.
From the manpage:
To prevent the passwords from being seen, use the
--use-askpass
or store them in.wgetrc
or.netrc
, and make sure to protect those files from other users with"chmod"
. If the passwords are really important, do not leave them lying in those files either --- edit the files and delete them after Wget has started the download.