首先,我知道此问题已在堆栈溢出here,here,here以及in some other places中多次发布。
但是,我决定打开一个新的主题(冒着被投票的风险),因为我不认为我的机器存在实际问题,但是有PUTTY。
环境描述
简而言之,我有一台运行虚拟机(VMWare)的Windows机器。
案例场景#1(可行)
此案例场景描述了我期望实现的行为。基本上,此过程正在 VM本身内完成。这意味着,通过VM Player 操作机器。
service sshd status
会产生 openssh-daemon (pid 1557) is running...
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服务的标识列表中。 pando
用户)。git commit -a -m "My message"
成功,因为Git Admin
密钥位于SSH代理的身份列表中git push origin master
也是成功的,出于同样的原因案例场景#2(它不起作用)
此案例场景描述了相同的过程,但是来自Putty终端。我向Pageant添加了与案例场景#1,第3点中描述的相同的SSH密钥。看起来Putty一切正常,因为我可以成功SSH我的虚拟机
pando
(这是Case Scenario 1中提到的身份之一)登录。su
service sshd status
会产生 openssh-daemon (pid 1557) is running...
(请注意,它与第一种情况下第2点的结果相同)ssh-add -l
会产生 Could not open a connection to your authentication agent
现在,我熟悉eval $(ssh-agent)
的过程,然后手动在SSH文件夹中添加SSH密钥。事实上,每次我SSH虚拟机时都这样做。但我其实不喜欢这样做。
我也熟悉在.bashsrc
文件中添加一些脚本,但是上次我这样做时,我得到了Puppet的附带效果。
所以基本的问题是:即使我使用相同的SSH密钥,两种情况下的区别是什么? Pageant是不转发密钥吗?如果是这样,为什么我能够SSH我的机器?为什么我应该在第二种情况下更改.bashrc
用户的pando
文件,如果在第一种情况下没有它我可以完全相同的事情?我想我错过了一条基本的信息
希望这是有道理的。
的问候。
答案 0 :(得分:1)
openssh-daemon 和 authentication-daemon 不是一回事。您感兴趣的是身份验证ssh-agent
,这是您的个人密钥存储区。 openssh-deamon 又名sshd
是服务器,它在系统范围内运行并接受与您计算机的连接。
桌面环境通常默认启动身份验证代理(ssh-agent
,seahorse
,gnome-keyring
),因此ssh-add
适合您。但是连接存储在环境变量中,这些变量在从用户到超级用户(su
)的过渡中被删除。
您可以使用-m
切换到su
来允许连接持久性。这将保留环境变量,从而保存与身份验证代理的连接。
即使我使用相同的SSH密钥,两种情况之间的区别是什么?
除了su
部分删除环境变量并且在更改用户时不执行.bashrc
和类似脚本时,应该没有区别(您可以强制su
的行为方式与使用su -l
登录shell,但不是问题)。问题是与身份验证代理的连接保留为环境变量和UNIX域套接字,在su
期间丢失。您可以使用su -m
它应该适合您。
Pageant不转发密钥吗?