我已经通过 ssh 克隆了我的 git 存储库。因此,每次我通过推或拉与源站大师通信时,我都必须重新输入我的密码。如何配置 git 以便我不需要多次输入密码?
ssh-add
ssh-agent
您希望ssh-agent在登录时在后台运行。登录后,我们的想法是运行ssh- add一次且仅一次,以便为代理提供您的密码,以解码您的密钥。然后,代理就坐在内存中,您的密钥解锁并加载,每次您在某个地方 ssh 时都可以使用。
ssh- add
然后所有 ssh-family 命令1将咨询代理并自动能够使用您的私钥。
在 OSX (err, macOS )、GNOME 和 KDE 系统上,ssh-agent通常会为您自动启动。我将详细介绍以防万一,像我一样,您也有 Cygwin 或其他 Windows 环境,而这肯定不适合您。
从这里开始:man ssh-agent。
man ssh-agent
有多种方法可以自动运行代理。正如手册页所解释的,您可以运行它,使其成为所有登录会话其他进程的父进程。这样,它提供的环境变量将自动存在于您的所有 shell 中。当您(稍后)调用ssh-add或ssh两者都可以访问代理时,因为它们都具有带有魔术套接字路径名或其他内容的环境变量。
ssh
或者,您可以将代理作为普通子项运行,将环境设置保存在文件中,并在每个 shell 启动时获取该文件。
我的 OSX 和 Ubuntu 系统会自动进行代理启动设置,所以我只需运行ssh-add一次。尝试运行ssh- add并查看它是否有效,如果可以,那么您只需每次重新启动时执行一次。
我的 Cygwin 系统需要手动完成,所以我在我的.profile和我的.bashrc源代码中执行了此操作.profile:
.profile
.bashrc
. .agent > /dev/null ps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || { ssh-agent > .agent . .agent > /dev/null }
该.agent文件由脚本自动创建;它包含环境变量定义和导出。以上尝试获取 .agent 文件,然后尝试ps(1)代理。如果它不起作用,它会启动一个代理并创建一个新的代理文件。您也可以只运行ssh-add,如果失败则启动代理。
.agent
ps(1)
sudo1. 甚至使用正确的 pam 扩展名进行本地和远程操作。
sudo