猿问

通过SSH配置Git以登录一次

通过SSH配置Git以登录一次

我已经通过ssh克隆了我的git存储库。因此,每次我通过推或拉与原始主人沟通时,我都必须重新输入密码。如何配置git以便我不需要多次输入密码?



守着一只汪
浏览 681回答 3
3回答

临摹微笑

试试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-add或ssh两者都可以访问代理时,因为它们都具有带魔术套接字路径名的环境变量或其他任何内容。或者,您可以将代理作为普通子代运行,将环境设置保存在文件中,并在启动时在每个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扩展。

呼如林

与GitHub有类似的问题,因为我使用的是HTTPS协议。要检查您正在使用的协议,请运行git config -l并查看以remote.origin.url。开头的行。切换协议git config remote.origin.url git@github.com:your_username/your_project.git

梵蒂冈之花

这是关于配置ssh,而不是git。如果您还没有,则应使用ssh-keygen(使用空白密码)来创建密钥对。然后,使用将公钥复制到远程目标ssh-copy-id。除非你需要多个密钥(例如,一个更安全的密钥用于其他目的)或者你有一些非常奇怪的多重身份的东西,它就是这么简单:ssh-keygen&nbsp;&nbsp;&nbsp;#&nbsp;enter&nbsp;a&nbsp;few&nbsp;times&nbsp;to&nbsp;accept&nbsp;defaultsssh-copy-id&nbsp;-i&nbsp;~/.ssh/id_rsa&nbsp;user@host编辑:你应该只是阅读DigitalRoss的答案,但是:如果你使用带密码的密钥,你需要使用它ssh-add <key-file>来添加它们ssh-agent(ssh-agent如果你的发行版还没有为你运行的话,那么显然会启动它)。
随时随地看视频慕课网APP
我要回答