首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么ssh代理需要根访问?

为什么ssh代理需要根访问?
EN

Stack Overflow用户
提问于 2014-11-28 06:39:59
回答 2查看 7.3K关注 0票数 5

我刚刚安装了Archbang,并试图克隆我的一个Git项目,这需要SSH密钥。

过去,我在Ubuntu和RedHat机箱上都遵循过Github的成功指南,但由于某些原因,我在新安装的拱门上并不适合它。

我已经使用以下命令成功地生成了我的SSH公钥/私钥对:

代码语言:javascript
复制
ssh-keygen -t rsa -b 4096 -C "email@address"

但是,当我继续启动SSH代理并添加我的公钥时,我会遇到一些问题。

代码语言:javascript
复制
[user@arch ~]$ eval "$(ssh-agent -s)"
bind: Permission denied
unix_listener: cannot bind to path: /tmp/ssh-ZqYqSabxjZeA/agent.9328

但是,如果我将它作为root运行,这是成功的:

代码语言:javascript
复制
[user@arch ~]$ eval "$(sudo ssh-agent -s)"
[sudo] password for user: 
Agent pid 9146

但我很确定我不想把SSH作为根。

继续前进时,当我尝试使用ssh-add时,我也会得到权限错误,但这次是作为标准用户和root用户:

代码语言:javascript
复制
[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.

所以现在我真的很困惑。

我尝试过将bash过程打开为root来完成这些工作,但是1)我不喜欢这个想法,2)它仍然不起作用,但这次是出于不同的原因:

代码语言:javascript
复制
[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:

由于某些原因,在根shell中执行此操作会导致我的SSH密钥密码短语被拒绝;我多次尝试使用最简单的密码短语,所以我肯定我已经给了它正确的密码。

我不知所措。我真的不喜欢所有这些sudo内容,我也不知道为什么它看起来是必要的;我检查了.ssh目录及其文件的权限,甚至删除了整个目录并重新生成了键,以确保它们不是用错误的权限生成的。

有人能帮帮我吗?我做错了什么?

编辑:作为对建议答案的回应,我再次尝试使用主目录中的套接字位置。以下是研究结果:

代码语言:javascript
复制
[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,并试图再次添加它。

代码语言:javascript
复制
[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密钥创建的密码。到底怎么回事?!这真是令人费解。

EN

回答 2

Stack Overflow用户

发布于 2014-11-28 08:10:38

您正在运行的用户似乎没有写入默认ssh代理套接字位置的权限。

这应该可以解决您的问题:

代码语言:javascript
复制
ssh-agent -a ~/.ssh-agent.$$

这将使用-a选项指定套接字位置,即主目录中的~/.ssh-agent.$$

权限问题可能是由简单的UNIX权限(即,该用户不能写的/tmp )或SELinux或其他东西引起的。

票数 2
EN

Stack Overflow用户

发布于 2014-11-28 21:19:26

经过几个小时的努力,我终于找到了问题的根源。

  1. 我的umask设置完全错误:在安装后设置环境时,我意外地将umask 755放在了.bashrc中;我的目的是将文件权限设置为755,在这种情况下,umask应该被设置为022002 (我使用了后者)。这个不正确的umask被证明是所有权限错误的根(hehe):所有不同的SSH命令生成的文件和目录都是使用不正确的权限创建的。
  2. 我试图用我的公钥,而不是我的私钥;我不明白为什么它总是说我的密码是错误的,尽管我100%肯定它是正确的。原因是密码是用于私钥的;公钥没有密码保护,所以试图ssh-add它并为它输入密码会导致所有那些“坏密码”错误。

谢谢大家的帮助!你让我找到了对我有用的解决方案。在纠正了这些错误之后,我成功地启动了没有根访问的ssh-agent,并添加了我的私有SSH密钥。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27183255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档