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

psc*_*idt 224 wget

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

wget http://<user>:<pass>@serveradress
Run Code Online (Sandbox Code Playgroud)

但是 wget 响应:无效端口

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

Lek*_*eyn 274

Wget 解释<pass>@serveraddress为端口。要指定用户名和密码,请使用--user--password开关:

wget --user user --password pass http://example.com/
Run Code Online (Sandbox Code Playgroud)

来自man wget

--user=user

--password=password

为 FTP 和 HTTP 文件检索指定用户名user和密码password。可以使用FTP 连接的and选项和 HTTP 连接的--ftp-userand--ftp-password选项覆盖这些参数 。--http-user--http-password

  • 我更喜欢 Nabil Kadimi 的回答中描述的 `--ask-password` 选项。它让您在另一行不可见地输入密码,并避免将其存储在您的 shell 历史记录中。 (73认同)
  • @Kevin 您可以通过以至少一个空格开头的行来避免将其存储在 shell 历史记录中(如 [Nabil](http://askubuntu.com/a/399927/6969) 所示)。如果密码/资源是敏感的,那么您应该更担心未加密的 HTTP/FTP/任何连接,而不是将其存储在磁盘上。 (9认同)
  • 我同意未加密的密码问题在某些情况下比 shell 历史记录更重要,但答案对于安全协议也很有用。此外,有时您确实需要比在线间谍(对您正在访问的内容不感兴趣或您不关心的内容)更担心能够访问您的计算机的间谍。下面的 --ask-password 答案显然更适合交互式使用,而这里的 --password 答案更容易自动化。Ixgr 关于 .wgetrc 和 chmod 的评论在某些情况下也很有趣。 (2认同)
  • 除了 shell 历史记录之外,命令行参数还可以通过 _ps_ 查看。 (2认同)

Nab*_*imi 147

您在这里有 3 个选择。除了直觉之外,它们没有特定的顺序:

1. 任何人都可以看到密码(使用命令history

wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext
Run Code Online (Sandbox Code Playgroud)

密码也将是可见的pstophtop和类似的。

2. 任何人都可以看到你背后的密码

 wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext
Run Code Online (Sandbox Code Playgroud)

请注意命令前的空格,它会阻止将其保存到您的历史记录中。

密码也将是可见的pstophtop和类似的。

3. 包括您在内的任何人都看不到密码

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

  • 虽然它在历史记录中不可见,但在进程运行时所有执行 ps、top、htop 或类似命令的人都可以看到它。 (10认同)
  • 如果`--ask-password` 不可用或者你不想每次都输入密码,`wget -i link.txt` 可以提供帮助,其中`link.txt` 包含`ftp://remote_user:SECRET @ftp.example.com/file.ext` (4认同)

Per*_*uck 7

您还可以将用户名和密码存储在文件中~/.wgetrc 并更改该文件的权限,以便只有您的用户可以读取它:

文件~/.wgetrc

user=john
password=SEcrEt
Run Code Online (Sandbox Code Playgroud)

... 进而

chmod 600 ~/.wgetrc
Run Code Online (Sandbox Code Playgroud)

但是请注意,该用户root仍然可以查看该文件并读取密码。

联机帮助页

为防止密码被看到,请使用--use-askpass或 将它们存储在 .wgetrc或 中.netrc,并确保使用"chmod". 如果密码真的很重要,也不要将它们留在这些文件中——编辑文件并在 Wget 开始下载后删除它们。