小编典典

通过 SSH 配置 Git 以登录一次

all

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


阅读 62

收藏
2022-06-21

共1个答案

小编典典

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

您希望ssh-agent在登录时在后台运行。登录后,我们的想法是运行ssh- add一次且仅一次,以便为代理提供您的密码,以解码您的密钥。然后,代理就坐在内存中,您的密钥解锁并加载,每次您在某个地方 ssh 时都可以使用。

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

在 OSX (err, 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/null
ps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || {
        ssh-agent > .agent
        . .agent > /dev/null
}

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


sudo1. 甚至使用正确的 pam 扩展名进行本地和远程操作。

2022-06-21