我正在我的树莓派服务器上工作,每当我在 gitremotely 上克隆或做任何事情时,我都想禁用推拉密码。我怎么做?当我尝试将任何更改拉入或推送到服务器时,我不想在 git shell 上输入密码。
2 回答
我不确定你的确切设置是什么,但在我看来你想在你的服务器上设置一个 SSH 密钥。Pro Git书在第4.4 章中详细介绍了如何做到这一点:
让我们在服务器端设置 SSH 访问。在此示例中,您将使用 authorized_keys 方法来验证您的用户。我们还假设您正在运行像 Ubuntu 这样的标准 Linux 发行版。首先,为该用户创建一个“git”用户和一个 .ssh 目录。
$ sudo adduser git $ su git $ cd $ mkdir .ssh
接下来,您需要将一些开发人员 SSH 公钥添加到该用户的 authorized_keys 文件中。假设您通过电子邮件收到了一些密钥并将它们保存到临时文件中。同样,公钥看起来像这样:
$ cat /tmp/id_rsa.john.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq dAv8JggJICUvax2T9va5 gsg-keypair
您只需将它们附加到您的 authorized_keys 文件中:
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys $ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
您需要生成 SSH 密钥(如 @Ajedi32 exlains)或类似 github 页面上的说明:https ://help.github.com/articles/generating-ssh-keys
目前,如果您键入
git remote -v
,您将看到您的存储库(origin
可能)将具有以 ) 开头的路径https://github.com/user/repo.git
。这意味着本地机器上的 git 指的是远程 git repo via https
。当通过 引用远程 git repo时https
,git 总是会询问密码。
这就是为什么在您按照上述方法之一设置 SSH 密钥之后,您必须将 git 引用远程存储库的方式从https
一个协议更改为另一个ssh
协议。
为此,您首先必须写下您当前的回购路径,例如。
https://github.com/username/reponame.git
然后你可以将它转换为ssh
样式地址:(
ssh://git@github.com/username/reponame.git
注意你只需要改变username
和reponame
部分。保持git@github.com
原样。它总是必须是这样的。
然后在您的本地计算机上,您可以键入以下代码:如果您使用的是 linux
git remote -v
git remote rm origin
git remote add origin ssh://git@github.com/username/reponame.git
git remote -v
最后一个命令将打印 git 引用远程存储库的路径,它将以ssh://...
.
请注意,使用命令时git remote -v
,存储库路径将被打印两次,一次是fetch
一次,一次是带有 push
注释。