似乎如果我重新启动,我的 ssh 设置就会被清除。
我按照本教程使用 ssh-add 来映射我需要的另外 2 个密钥。
我是否应该在我的 bash 配置中运行此命令以便它每次都运行?
答案1
通常你应该运行 ssh-keygen一次在 中创建一个 ssh 私钥~/.ssh/id_rsa
,并在 中配对一个匹配的公钥~/.ssh/id_rsa.pub
。然后安装那个民众在你需要 ssh 进入的每台机器上添加公钥。例如,如果它是类 Unix 机器上的 git repo,你需要将公钥附加到~/.ssh/authorized_keys
在该服务器上你的帐户的主目录中。
这典型的这种方式的ssh
工作原理是,你有一个代表你的私钥-公钥对,并且你将私钥保密,但是将公钥安装到你需要访问的所有服务器上的所有帐户中。
之后,您就可以ssh
进入该机器,或通过其他方式克隆 repo git clone ssh://...
,而无需输入密码。
听起来你没有像我上面描述的那样按照典型方式进行设置ssh
,而是生成了两个单独的私钥-公钥对,但它们不在你的~/.ssh/
文件夹中,因此ssh
无法正常找到它们。听起来你在其他服务器中安装了两个单独的公钥,两个 git repo 服务器中各一个。听起来你还启动ssh-agent
并使用ssh-add
参数来告诉它可以找到你的私钥-公钥对的某个替代位置。因此每次你注销或重新启动时,ssh-agent
都会退出,因此你必须每次都ssh-agent
手动重新运行。ssh-add
对我来说,这种对所发生事情的解释比~/.ssh/
每次重启时都会删除某些内容的想法更有可能。
如果我是你,我会从两对密钥中挑选一对作为我的身份,将该对放入,将该对中的公钥安装到两个 git repo 服务器上,而根本~/.ssh/
不用理会ssh-agent
和。ssh-add
但请注意,如果您在 git repo 服务器上的用户名与您在客户端计算机上使用的本地帐户的用户名不同,您还需要执行一个额外步骤。您需要创建一个~/.ssh/config
文件来ssh
告知在连接到其他计算机时要使用的用户名。格式非常简单:
Host gitrepo1.example.com
User myGitRepo1Username
Host gitrepo2.example.com
User myGitRepo2Username