如何为wget提供用户名和密码?


157

我试图通过wget连接到服务器:

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

但是wget响应:无效的端口

我知道服务器在端口80处接受传入流量。如何解决此问题?


我认为您不能在那里可靠地使用user:pass @ name语法;wget分别为它们提供了单独的命令行选项,因此可能天真地将字符串后的字符串解析:为端口号。
geekosaur 2011年

Answers:


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-passwordHTTP连接选项。


48
我更喜欢--ask-passwordNabil Kadimi的回答所描述的选项。它让您在另一行上不可见地输入密码,并且避免将其存储在Shell历史记录中。
凯文

8
@Kevin您可以通过至少以一个空格开头这一行来避免将其存储在Shell历史记录中(如Nabil所示)。如果密码/资源敏感,那么除了将其存储在磁盘上之外,您还应该担心未加密的HTTP / FTP /任何连接。
Lekensteyn 2014年

我同意在某些情况下未加密的密码问题比外壳程序历史记录更为重要,但是答案对于安全协议也很有用。另外,有时候您确实比在线间谍(不必担心您正在访问的内容或您不在意的内容)更担心可以访问计算机的间谍。下面的--ask-password答案显然更适合交互式使用,而此处的--password答案更易于自动化。在某些情况下,Ixgr关于.wgetrc和chmod的评论也很有趣。
youen

据我了解手册,通过不解释为端口。“您还可以在URL中对用户名和密码进行编码:http://user:password@host/path“”- 手册
Tim

104

您有3个选择,此处除了胆量感觉外没有其他特定顺序:

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代替--userand --password。如果需要,ftp选项为--ftp-user--ftp-password


2
这不是完全正确: man wget表示--user和--password是有效选项,可以由--http-user或--ftp-password 覆盖
Charles Green
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.