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

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


,但是wget响应:无效的端口

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

评论

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

#1 楼

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

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


man wget开始:


--user=user

--password=password

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


评论


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

–凯文
2014年4月8日在1:23

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

– Lekensteyn
2014年4月8日在8:58



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

–youen
17年7月17日在12:21

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

– Tim
19年2月19日在9:52

超出shell历史记录命令行参数的用户可以通过ps查看。

– Gerardw
20年9月9日14:32在

#2 楼

您有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


请注意命令前的空格,这会阻止将其保存到您的历史记录中。 br /> 3 /密码对包括您在内的任何人都不可见

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


评论


尽管它在历史记录中不可见,但是在进程运行时,执行ps,top,htop或类似命令的所有人员都可以看到它。

–user412812
15年5月22日在20:04



如果--ask-password不可用,或者您不想每次都输入密码,则wget -i link.txt可以提供帮助,其中link.txt包含ftp:// remote_user:SECRET@ftp.example.com/ file.ext

– Tehnicaorg
18年4月27日在13:57

#3 楼

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

文件~/.wgetrc

user=john
password=SEcrEt


...,然后

chmod 600 ~/.wgetrc


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

从联机帮助页:


为了防止看到密码,请使用--use-askpass
存储它们在.wgetrc.netrc中,并确保使用"chmod"保护那些
文件免受其他用户的攻击。如果密码确实很重要,请不要将它们放在这些文件中---编辑
文件,并在Wget开始下载后将其删除。


#4 楼

您可以通过--user=USERNAME--password=PASSWORD提供身份验证凭据;基于man wget,可以使用--http-user=USERNAME--http-password=PASSWORD进行HTTP连接,使用--ftp-use=USERNAME--ftp-password=PASSWORD进行ftp连接来覆盖该命令。

#5 楼

该命令可以使用--http-user--http-password代替--user--password。如果有ftp请求,则选项为--ftp-user--ftp-password

评论


这并非完全正确:man wget表示--user和--password是有效选项,可以由--http-user或--ftp-password覆盖。

–查尔斯·格林
17年6月15日在13:04