![为 git 设置 SSH 代理](https://linux22.com/image/1056877/%E4%B8%BA%20git%20%E8%AE%BE%E7%BD%AE%20SSH%20%E4%BB%A3%E7%90%86.png)
我不想每次通过 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)$