为 git 设置 SSH 代理

为 git 设置 SSH 代理

我不想每次通过 ssh(通过用户名和密码登录)访问远程存储库时都输入我的 ssh 密码。

ssh-agent
git config --global credential.helper 'cache --timeout=3600'

不起作用。每次我想要推送/拉取时,我仍然必须输入密码。

我还需要做什么才能使其发挥作用?

如果我执行

ssh-agent bash

然后尝试在同一个终端中按两次,我仍然必须输入两次密码。

答案1

哦,我误解了 ssh 代理的作用。我使用的是用户名和密码。我可以只将密码存储在 RAM 中吗?我不想让它只是躺在我的主文件夹中。– UTF-8

标准工具不行openssh。SSH 代理用于在使用前添加的密钥(现在也可以在第一次使用时添加,但这是另一回事)。

如果您希望能够传递密码,可以使用sshpass,它可以从环境变量中读取密码,但请注意,从安全角度来看,这当然不建议。如果您关心安全性,请设置公钥身份验证。

答案2

ssh-agent需要为你的环境提供变量,因此正确的使用方法是:

eval $(ssh-agent)  

然后,您可以使用ssh-add将密钥添加到您的代理。阅读man ssh-agent;man ssh-add

例如(YMMV):

w3@aardvark:~(0)$ env | grep SSH
SSH_AUTH_SOCK=/run/user/1003/keyring-ozv0oa/ssh
w3@aardvark:~(0)$ eval $(ssh-agent)
Agent pid 26624
w3@aardvark:~(0)$ env | grep SSH
SSH_AGENT_PID=26624
SSH_AUTH_SOCK=/tmp/ssh-FUVLa89gGIpt/agent.26623
w3@aardvark:~(0)$ ssh-add -l
The agent has no identities.
w3@aardvark:~(1)$ ssh-add
Enter passphrase for /home/w3/.ssh/id_rsa: 
Identity added: /home/w3/.ssh/id_rsa (/home/w3/.ssh/id_rsa)
w3@aardvark:~(0)$ env | grep SSH
SSH_AGENT_PID=26624
SSH_AUTH_SOCK=/tmp/ssh-FUVLa89gGIpt/agent.26623
w3@aardvark:~(0)$ ssh-add -l
2048 a7:56:f0:86:ab:d3:ec:56:3c:84:05:9e:61:38:a9:7b /home/w3/.ssh/id_rsa (RSA)
w3@aardvark:~(0)$

相关内容