我的服务器公开两个 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