我已经将 OpenSSH 配置为在登录 github 时使用特定密钥......
[mpenning@mudslide .ssh]$ pwd
/home/mpenning/.ssh
[mpenning@mudslide .ssh]$ ls -la | grep config
-rw-r--r-- 1 mpenning mpenning 473 Jan 23 09:49 config
[mpenning@mudslide .ssh]$ head -n 4 config
Host gh
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
[mpenning@mudslide .ssh]$
但是,当我通过 ssh 连接到 github 而没有在 CLI 上明确调用 github 的私钥时,身份验证失败:
[mpenning@mudslide .ssh]$ ssh -F ./config [email protected]
Permission denied (publickey). ^^^^^^^^ This used to work
[mpenning@mudslide .ssh]$
我可以强制它工作的唯一方法是当我 ssh 时明确调用私钥...
[mpenning@mudslide .ssh]$ ls -la | grep github
-r-------- 1 mpenning mpenning 3243 Nov 24 2016 id_rsa_github
-rw-r--r-- 1 mpenning mpenning 743 Nov 24 2016 id_rsa_github.pub
[mpenning@mudslide .ssh]$ ssh -i ./id_rsa_github [email protected]
PTY allocation request failed on channel 0
Hi mpenning! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
[mpenning@mudslide .ssh]$
我的config
文件昨天还正常工作……我没有对它做任何更改。该config
文件已经指向正确的私钥。
突然,ssh 似乎忽略了我的 github 配置。它甚至从未尝试过正确的私钥...
[mpenning@mudslide .ssh]$ ssh -v [email protected] 2>&1 | grep github
debug1: Connecting to github.com [192.30.253.113] port 22.
debug1: Host 'github.com' is known and matches the RSA host key.
[mpenning@mudslide .ssh]$
显然这是可行的,但我不应该使用-i......
[mpenning@mudslide .ssh]$ ssh -i id_rsa_github -v [email protected] 2>&1 | grep github
debug1: Connecting to github.com [192.30.253.113] port 22.
debug1: identity file id_rsa_github type 1
debug1: identity file id_rsa_github-cert type -1
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Offering RSA public key: id_rsa_github
Authenticated to github.com ([192.30.253.113]:22).
Connection to github.com closed.
[mpenning@mudslide .ssh]$
我的问题:
- 是什么破坏了它?
- 我该如何修复它?
答案1
您没有调用来连接到您在配置中定义的主机。
ssh gh
不使用ssh .... [email protected]
但为什么呢?——见下文:
[mpenning@mudslide.ssh]$ ssh -F./config[电子邮件保护]权限被拒绝(公钥)。^^^^^^^^^ 这曾经有效
我认为它从来没有发生过(你用历史记录检查过吗?)。我认为你用过ssh -F ./config gh
gh
您在配置中定义主机如下:
Host gh
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
因此,您只需调用即可ssh gh
。如果您想覆盖配置中的内容,则可以传递其他参数,例如,如果您想使用不同的用户,但是,由于您已经设置了所有必需的变量,因此您应该只使用 Host 变量,而不用做任何其他事情。
-F ./config
说实话,你甚至不需要通过。
答案2
确保您的 ~/.ssh/config 由您的用户和“staff”组拥有(而不是 root/root)