2

我刚刚开始了一份合同工作,并且在公司的 git 存储库中有一个帐户。问题是,给定的密码是字母数字乱码,所以我想配置 git 以允许在我的 Ubuntu 开发盒上减少密码推送/拉取。

为此,我创建了一个.netrc具有 0600 权限的文件$HOME并添加了

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

4

1 回答 1

5

您正在使用克隆公司 repo 的 url:

jason@git.companyserver.com:/opt/git/jason.git

看起来像 Git 的 SSH url,如官方 Linux Kernel Git 文档中指定的cloneurls

ssh 协议也可以使用另一种类似 scp 的语法:

[user@]host.xz:path/to/repo.git/

在你的情况下:

  1. user@jason@
  2. host.xzgit.companyserver.com
  3. /path/to/repo.git//opt/git/jason.git

您需要设置一个 SSH 密钥,以便在远程 Git 存储库中使用“无密码”推送和拉取功能。您可以在GitHub 帮助页面上找到有关生成 SSH 密钥的说明。

但是请注意,建议您仍然使用密码加密您的私有 SSH 密钥,因为如果有人设法从您的计算机上窃取了私有密钥文件,那么这就像窃取您的密码一样,他们将能够冒充您您与该私钥一起使用的任何 SSH 服务,正如GitHub 关于为什么需要 SSH 密码短语所解释的那样:

密码不是很安全,你已经知道了。如果您使用一个容易记住的,它更容易猜测或蛮力。如果您使用随机的密码,则很难记住,因此您更倾向于写下密码。这两者都是非常糟糕的事情™。这就是您使用 ssh 密钥的原因。

但是使用没有密码的密钥基本上与在计算机上的文件中写下随机密码相同。任何可以访问您的驱动器的人都可以访问您使用该密钥的每个系统。这也是一件非常糟糕的事情™。解决方案很明显,添加密码。

在同一篇帮助文章中,他们还解释了如何使用 *nix 实用程序ssh-agent在终端会话期间自动存储您的密码,这样您就不必在每次使用私钥发出 SSH 请求时都输入密码。

于 2013-07-20T16:06:57.087 回答