我刚刚安装了 Archbang,并试图克隆我的一个 Git 项目,这需要 SSH 密钥。
过去,我在 Ubuntu 和 RedHat 机器上遵循了 Github 成功指南,但由于某种原因,它在我的新 Arch 安装中并不适合我。
我已经使用以下命令成功生成了我的 SSH 公钥/私钥对:
ssh-keygen -t rsa -b 4096 -C "email@address"
但是当我继续启动 SSH 代理并添加我的公钥时,我遇到了问题。
[user@arch ~]$ eval "$(ssh-agent -s)"
bind: Permission denied
unix_listener: cannot bind to path: /tmp/ssh-ZqYqSabxjZeA/agent.9328
但是,如果我以 root 身份运行它,这是成功的:
[user@arch ~]$ eval "$(sudo ssh-agent -s)"
[sudo] password for user:
Agent pid 9146
但我很确定我不想以 root 身份进行 SSH 操作。
继续前进,当我尝试使用时ssh-add
,我也收到权限错误,但这次是标准用户和 root 用户:
[user@arch ~]$ ssh-add .ssh/id_rsa.pub
Could not open a connection to your authentication agent.
[user@arch ~]$ sudo ssh-add .ssh/id_rsa.pub
Could not open a connection to your authentication agent.
所以现在我真的很困惑。
我尝试以 root 身份打开一个 bash 进程来执行此操作,但是 1)我不喜欢这个想法,并且 2)它仍然无法正常工作,但这次是出于不同的原因:
[user@arch ~]$ sudo ssh-agent -s
[root@arch ~]# ssh-add .ssh/id_rsa.pub
Enter passphrase for .ssh/id_rsa.pub:
Bad passphrase, try again for .ssh/id_rsa.pub:
出于某种原因,在 root shell 中执行此操作会导致我的 SSH 密钥密码被拒绝;我已经用最简单的密码尝试了多次,所以我很肯定我给了它正确的密码。
我不知所措。我真的不喜欢所有这些sudo
东西,我不知道为什么它似乎是必要的;我已经检查了 .ssh 目录及其文件的权限,甚至删除了整个目录并重新生成密钥以确保它们没有使用错误的权限生成。
有人可以帮我吗?我究竟做错了什么?
编辑:为了响应建议的答案,我再次尝试使用我的主目录中的套接字位置。这些是结果:
[user@arch ~]$ mkdir -m 700 ~/.ssh
[user@arch ~]$ ssh-keygen -t rsa -b 4096 -C "email@address"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
...
[user@arch ~]$ chmod 644 .ssh/id_rsa.pub && chmod 600 .ssh/id_rsa
[user@arch ~]$ eval "$(ssh-agent -sa .ssh-agent.$$)"
Agent pid 1881
[user@arch ~]$ ssh-add .ssh/id_rsa.pub
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '.ssh/id_rsa.pub' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
在这一点上,我很困惑为什么这些权限是不可接受的,以及为什么它认为我的公钥是私钥。但我很幽默,将权限更改为 600 并尝试再次添加。
[user@arch ~]$ chmod 600 .ssh/id_rsa.pub
[user@arch ~]$ ssh-add .ssh/id_rsa.pub
Enter passphrase for .ssh/id_rsa.pub:
Bad passphrase, try again for .ssh/id_rsa.pub:
现在我已经到了和以前类似的地方:它不喜欢我为我的 SSH 密钥创建的密码。这是怎么回事?!这真是令人费解。