为了账号安全,请及时绑定邮箱和手机立即绑定

通过SSH配置Git以登录一次

通过SSH配置Git以登录一次

Git
守着一只汪 2019-08-09 14:37:20
通过SSH配置Git以登录一次我已经通过ssh克隆了我的git存储库。因此,每次我通过推或拉与原始主人沟通时,我都必须重新输入密码。如何配置git以便我不需要多次输入密码?
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

试试ssh-add,你需要ssh-agent运行并持有你的私钥

(好的,回应更新的问题,你首先运行ssh-keygen生成一个公钥和私钥,如Jefromi所 解释的。你把公钥放在服务器上。你应该使用密码,如果你没有,你有相同的平原- 私钥中的文字密码。但是当你这样做时,你需要作为一个实际问题ssh-agent,如下所述。)

您希望ssh-agent在登录时在后台运行。登录后,想法是只运行ssh-add一次,以便为代理提供密码,以解码密钥。然后代理只是在你的钥匙解锁和加载的情况下坐在内存中,每次你在某个地方ssh时都可以使用。

然后,所有ssh-family命令1将咨询代理并自动使用您的私钥。

在OSX(错误,macOS)上,GNOME和KDE系统ssh-agent通常会自动为您启动。我将详细介绍细节,就像我一样,你也有一个Cygwin或其他Windows环境,你肯定不会这样做。

从这里开始:man ssh-agent

有多种方法可以自动运行代理。如手册页所述,您可以运行它,使其成为所有登录会话的其他进程的父级。这样,它提供的环境变量将自动存在于所有shell中。当您(稍后)调用ssh-addssh两者都可以访问代理时,因为它们都具有带魔术套接字路径名的环境变量或其他任何内容。

或者,您可以将代理作为普通子代运行,将环境设置保存在文件中,并在启动时在每个shell中获取该文件。

我的OSX和Ubuntu系统自动执行代理启动设置,因此我所要做的就是运行ssh-add一次。尝试运行ssh-add并查看它是否有效,如果是,那么每次重启只需要执行一次。

我的Cygwin系统需要手动完成,所以我在我.profile和我的.bashrc源头做了这个.profile

. .agent > /dev/nullps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || {
        ssh-agent > .agent
        . .agent > /dev/null}

.agent文件由脚本自动创建; 它包含环境变量定义和导出。上面尝试获取.agent文件,然后尝试ps(1)代理。如果它不起作用,它将启动代理并创建新的代理文件。您也可以运行ssh-add,如果失败则启动代理。


1.甚至本地和偏远sudo的正确的pam扩展。


查看完整回答
反对 回复 2019-08-09
?
呼如林

TA贡献1798条经验 获得超3个赞

与GitHub有类似的问题,因为我使用的是HTTPS协议。要检查您正在使用的协议,请运行

git config -l

并查看以remote.origin.url。开头的行。切换协议

git config remote.origin.url git@github.com:your_username/your_project.git


查看完整回答
反对 回复 2019-08-09
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

这是关于配置ssh,而不是git。如果您还没有,则应使用ssh-keygen(使用空白密码)来创建密钥对。然后,使用将公钥复制到远程目标ssh-copy-id。除非你需要多个密钥(例如,一个更安全的密钥用于其他目的)或者你有一些非常奇怪的多重身份的东西,它就是这么简单:

ssh-keygen   # enter a few times to accept defaultsssh-copy-id -i ~/.ssh/id_rsa user@host

编辑:你应该只是阅读DigitalRoss的答案,但是:如果你使用带密码的密钥,你需要使用它ssh-add <key-file>来添加它们ssh-agentssh-agent如果你的发行版还没有为你运行的话,那么显然会启动它)。


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 680 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信