无法打开与您的身份验证代理的连接(审查)

Could not open a connection to your authentication agent (REVIEW)

首先,我知道这个问题在堆栈溢出here, here, here, as well as in some other places 中已经post编辑了好几次。

但是,我决定打开一个新线程(并冒着被否决的风险),因为我认为我的机器没有实际问题,但 PUTTY 有问题。

环境描述

简而言之,我有一台 windows 机器 运行 一台虚拟机 (VMWare)。

  1. 主机:Windows7(64位)
  2. 客机:CentOS 6 图形windows环境。
  3. 网络连接设置完美,防火墙没有问题。两台机器都可以互相ping通,我可以从两台机器上上网
  4. 来宾计算机上禁用了 Selinux
  5. Putty 配置正确(我认为是这样)。支持该声明的原因是我可以使用我为此创建的加密 SSH 密钥从主机 SSH 来宾计算机。但是,我认为仍然缺少一些配置。继续阅读。
  6. 我已经在来宾机器上配置了 GITOLITE,它已经启动 运行。
  7. 虽然与此问题无关,但我在来宾计算机上配置了一个 Samba 共享,如果我有所有的存储库的话。可以从主机访问共享,我可以毫无问题地编辑文件。
  8. 虚拟机播放器 7
  9. 来宾计算机最近重新启动并且没有发出其他命令。
  10. 安装在主机上的PUTTY

案例场景 #1(有效)

此案例场景描述了我期望实现的行为。基本上,此过程是在 虚拟机本身内完成的。也就是说,通过VM Player操作机器

  1. 以 root 身份打开终端
  2. service sshd status 产生 openssh-daemon (pid 1557) is running...
  3. ssh-add -l 产生 2048 1b:31 [...] b8:de Git Admin (RSA)2048 d2:58 [...] f6:2b pando (RSA)(2048) be:9b [...] dc:e9 web (RSA)。这是我在虚拟机中配置的三个用户。 SSH 密钥已自动加载并添加到 SSH 服务的身份列表中。
  4. 以 root 用户身份从 CLI 注销。我现在是标准用户(pando 用户)。
  5. 编辑其中一个存储库中的一个文件
  6. git commit -a -m "My message" 成功,因为 Git Admin 密钥在 SSH 代理的身份列表中
  7. git push origin master也成功了,同理

案例场景#2(不起作用)

此案例场景描述了相同的过程,但来自 Putty 终端。我将与案例场景 #1 第 3 点中所述相同的 SSH 密钥添加到 Pageant。看起来 Putty 一切正常,因为我可以成功通过 SSH 我的虚拟机

  1. 打开 Putty 终端。我以用户 pando 登录(这是案例场景 1 中提到的身份之一)。
  2. su
  3. service sshd status 产生 openssh-daemon (pid 1557) is running...(请注意,它与我们在第一个案例场景的第 2 点中得到的结果相同)
  4. ssh-add -l 产生 Could not open a connection to your authentication agent
  5. 因为上一步失败了,所以我遇到了本文开头超链接线程中描述的所有问题post。

现在,我熟悉了 eval $(ssh-agent) 的过程,然后在我的 SSH 文件夹中手动添加 SSH 密钥。事实上,我每次 SSH 虚拟机时都会这样做。但我实际上不想这样做。

我也很熟悉在 .bashsrc 文件中添加一些脚本,但是上次我这样做时,我得到了 Puppet 的附带影响。

所以基本问题是:即使我使用相同的 SSH 密钥,这两种情况之间有什么区别?是选美没有转发密钥吗?如果是这样,为什么我可以 SSH 我的机器?为什么我应该在第二种情况下更改 pando 用户的 .bashrc 文件,而在第一种情况下我可以在没有它的情况下实现完全相同的结果?我想我在这里遗漏了一条基本信息

希望这是有道理的。

问候。

openssh-daemonauthentication-daemon 不是一回事。您对身份验证一个又名 ssh-agent 感兴趣,这是您的个人密钥库。 openssh-deamon 又名 sshd 是 运行 系统范围内的服务器,它正在接受与您计算机的连接。

桌面环境通常默认启动身份验证代理(ssh-agentseahorsegnome-keyring),因此 ssh-add 适合您。但是连接存储在环境变量中,这些变量在从您的用户转换为超级用户 (su) 时被删除。

您可以使用 -m 切换到 su 来允许连接持久化。这将保留环境变量以及您与身份验证代理的连接。


What's the difference between both case scenarios, even though I am using the same SSH keys?

应该没有区别,除了 su 部分删除环境变量并且在更改用户时不执行 .bashrc 和类似脚本(您可以强制 su 以相同的方式运行作为登录 shell 使用 su -l,但这不是问题)。问题是与身份验证代理的连接作为环境变量和 UNIX 域套接字保存,在 su 期间丢失。您可以使用 su -m 它应该适合您。

Is it that Pageant is not forwarding the keys?

需要在 PuTTY 中允许转发: