回声$?运行 ssh-add 后打印 1

回声$?运行 ssh-add 后打印 1

我正在尝试使用 SSH 代理转发来配置部署CentOS 上的脚本。我将公钥复制到计算机上我的用户的authorized_keys文件中。我能够成功地使用部署用户登录服务器,而无需密码提示(并且部署用户的密码被锁定,例如)。~/.sshdeployserverpasswd -l deploy

请记住,我的 .ssh 目录仅包含authorized_keys 文件:

deploy@server $ ls
authorized_keys

现在我需要部署用户从服务器访问我的 git 存储库。解决方案是 SSH 代理转发。我应该能够通过在服务器上执行以下操作来通过服务器访问存储库:

# List SSH keys that are loaded into the agent
deploy@server $ ssh-add -l
# Make sure they key is loaded if 'ssh-add -l' didn't show anything
deploy@server $ ssh-add
deploy@server $ ssh -A [email protected] 'git ls-remote [email protected]:capistrano/rails3-bootstrap-devise-cancan.git'

问题是 ssh-add 无法加载密钥:

deploy@server $ exec ssh-agent bash
deploy@server $ ssh-add -l
The agent has no identities.
deploy@server $ ssh-add
deploy@server $ echo $?
=> 1

它打印 1。这意味着出现了问题。我有点困惑,因为文档指出我们可以使用 SSH 代理转发,所以我假设我们在部署的 .ssh 目录中不需要 id_rsa (私钥)。我刚刚将公钥从本地计算机复制到服务器的authorized_keys 文件中,然后我应该能够使用 SSH 代理转发来验证 git 存储库。然而,ssh-add 似乎需要存在私钥。文档从未提到我必须在我的服务器上创建私钥。

我哪里错了?

答案1

我认为你认为你必须跑步是错误的ssh-add 在服务器上

authorized-keys如果您的客户端计算机(即具有与 上文件中的公钥对应的私钥的计算机server)启动 ssh 连接,则应启用身份验证代理转发。您可以通过指定-A为参数来在命令行上执行此操作ssh,或者通常通过编辑/etc/ssh/ssh_config~/.ssh/config(对于连接到 的用户server)指定:

ForwardAgent yes

出于安全原因,通常将其设置为no

ssh-add继续运行server是没有必要的。它以 1 退出的原因是它找不到要添加(和转发)的私钥。如果您ssh-add在客户端计算机上运行(作为建立连接的用户),那么您将看到如下所示的行:

 Identity added: /home/your_user/.ssh/id_rsa

此类文件在~/deploy/.ssh机器上不可用server

而且你还必须确保你的 git 服务器安装了你的公钥。

相关内容