提供带有密码的git URL,其中包含"@"符号。

12 浏览
0 Comments

提供带有密码的git URL,其中包含"@"符号。

我想要使用用户名和密码来运行git命令(比如说push命令)。但是密码末尾有一个@符号,所以出现了这个错误。\n

\n无法解析主机\'@github.com\'\n

\n我的示例git命令是这样的。\n

git push https://username:password@@github.com/username/test.git

\n我认为密码末尾的@符号是错误的原因。但是无论如何,我想要找到一种方法以一步完成此命令,而不需要在第二步输入用户名和密码。

0
0 Comments

问题的出现原因是根据RFC 1738规定,URL中只能包含“0-9a-zA-Z”、特殊字符“$-_.+!*'()”和用于其保留目的的保留字符,@字符不能直接在URL中使用,需要进行URL编码。然而,这种方式非常不安全,因为URL在HTTP流量中是可读的,并且会被主机缓存、日志记录以及代理和路由器在传输路径上以多种方式存储。

解决方法是不要在URL中提供密码,如果不需要进行身份验证,就不要使用密码。此外,浏览器已经不推荐在URL中提供密码,可以使用SSH密钥或者git config credential.helper等更安全的方法进行一步推送操作。HTTPS URL是加密的,因为它是HTTP协议的一部分,位于TLS之上,所以传递敏感数据是安全的。可能指的是域名部分不是加密的,这是正确的,并被SNI和DNS所使用。

企业代理服务器可以配置为解密和监视所有的https/TLS流量。此外,唯一防止恶意攻击者读取https流量的是证书。由于流量经常被分析和存档,一旦证书泄露,即使几个月或几年后也可以解密。因此,要经常更改密码,并且不要忘记,对安全的最大威胁是方便性。

0