同一服务器上两个守护进程的 SSH 配置

同一服务器上两个守护进程的 SSH 配置

我的服务器公开两个 ssh 端口:一个用于服务器本身,一个用于 git 守护进程(gitea)。

我的本地~/.ssh/config

Host server
    hostname 1.2.3.4
    port 22
    user foo
    identityfile ~/.ssh/id_rsa_server
Host gitea
    hostname 1.2.3.4
    port 2222
    user git
    identityfile ~/.ssh/id_rsa_gitea

我可以使用 ssh 进入服务器$ ssh server

但是我无法使用 ssh 或执行 git 操作gitea- 它返回公钥错误。它似乎选择了错误的密钥,即使我在配置文件中指定了它。我认为它选择了列表中的第一个。

解决方法:

  • $ GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_gitea -F /dev/null" git ...
  • $ git config core.sshCommand "ssh -i ~/.ssh/id_rsa_gitea -F /dev/null"; git ...

但我总是忘记这些设置,而且它们不能很好地与自动化配合使用(我需要记住手动为每个 repo 设置它)。

我希望修复~/.ssh/config文件,以便它按预期工作。我该怎么做?


更新:
详细的 ssh 日志包括以下内容:

debug1: Reading configuration data ~/.ssh/config
...
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: ~/.ssh/id_rsa_server RSA SHA256:... explicit agent
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
[email protected]: Permission denied (publickey).

所以正如我上面所说,它只提供了第一个密钥,然后失败了。它没有提供正确的密钥(配置文件中的第二个密钥)。

答案1

Host server
    Hostname 1.2.3.4
    Port 22
    User foo
    IdentityFile ~/.ssh/id_rsa_server

Host gitea
    Hostname 1.2.3.4
    Port 2222
    User git
    IdentityFile ~/.ssh/id_rsa_gitea
    IdentitiesOnly yes

相关内容