我刚刚开始了一份合同工作,并在公司的git存储库中拥有一个帐户。问题是,给出的密码是字母数字乱码,所以我想配置git以允许在我的Ubuntu开发盒上减少密码的推/拉。
为此,我在.netrc
创建了$HOME
个拥有0600权限的文件并添加了
machine companyserver.com
login jason
password aphanumeric_gibberish
git clone命令由
组成git clone jason@git.companyserver.com:/opt/git/jason.git
即使删除了我的本地工作副本并将git repo重新克隆到
/media/storage/code_projects/company_working_copy
我仍然会收到提示输入密码。
根据这些条件,如何使用.netrc
实现无密码的推/拉?
答案 0 :(得分:5)
你正在使用克隆公司仓库的网址:
jason@git.companyserver.com:/opt/git/jason.git
看起来像Git的SSH网址,正如official Linux Kernel Git documentation for clone
urls:
另一种类似scp的语法也可以与ssh协议一起使用:
[user@]host.xz:path/to/repo.git/
在你的情况下:
user@
是jason@
。host.xz
是git.companyserver.com
。/path/to/repo.git/
是/opt/git/jason.git
。您需要设置一个SSH密钥才能使用“无密码”推送和拉动您的远程Git仓库。您可以在GitHub help page on generating SSH keys找到此类说明。
但是,请注意,建议您仍然使用密码加密私有SSH密钥,因为如果有人设法从您的计算机窃取私钥文件,那么就像窃取您的密码一样,他们将能够如GitHub on why SSH passphrases are necessary所解释的那样,模拟您使用该私钥的任何SSH服务:
密码不是很安全,你已经知道了。如果你使用一个容易记住的,它更容易猜测或暴力。如果你使用的是随机的,那么很难记住,因此你更倾向于写下密码。这些都是非常糟糕的事情。这就是你使用ssh密钥的原因。
但是使用没有密码短语的密钥与在计算机上的文件中记下该随机密码基本相同。任何能够访问您的驱动器的人都可以访问您使用该密钥的每个系统。这也是一件非常糟糕的事情。解决方案很明显,添加密码。
在同一篇帮助文章中,他们还解释了how to use the *nix utility ssh-agent
to automatically store your passphrase during a terminal session,这样您每次使用私钥发出SSH请求时都不必继续输入。