我在Kubuntu 12.04上为朋友设置了一个新的用户帐户。当他使用时ssh
,会出现以下错误:
无法打开与身份验证代理的连接
我们正在ssh
一些bash脚本中运行。
在研究了可能导致该错误的各种因素之后,我想到了以下解决方案:
$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa
然后,他可以ssh
按预期运行命令(和bash脚本)。
在运行这两个命令之前,不会在终端中设置env变量:
$ echo $SSH_AGENT_PID
$ echo $SSH_AUTH_SOCK
$
运行命令后,env变量将按预期设置。但是,它们不会保持设置状态(例如,在其他外壳中或在重新启动后)。
我想知道如何设置他的计算机,这样他就不必运行这两个命令来设置env变量。我不需要在计算机上运行它们。到目前为止,我还没有看到我们的机器之间有什么不同。
我在手册页中看到了此信息,但是它并没有告诉我Ubuntu通常是如何自动设置代理的,或者我朋友的计算机上正在发生什么,从而对他不起作用。
设置代理的方法主要有两种:第一种方法是,代理启动一个新的子命令,将某些环境变量导出到该子命令中,例如ssh-agent xterm&。第二个问题是,代理会打印所需的shell命令(可以生成sh(1)或csh(1)语法),这些命令可以在调用shell中进行评估,例如,
ssh-agent -s
对于bourne 类型的shell(例如sh(1)或ksh(1)和evalssh-agent -c
用于csh(1)及其派生类。
安装acct
并重新启动后,这是输出lastcomm
:
ssh-agent F newuser __ 0.12 secs Wed Aug 7 11:02
ssh-agent F newuser __ 0.00 secs Wed Aug 7 20:34
ssh-agent F newuser __ 0.02 secs Wed Aug 7 20:02
ssh-agent F newuser __ 0.01 secs Thu Aug 8 12:39
ssh-agent F newuser __ 0.02 secs Thu Aug 8 07:45
从手册页:
F-在派生后执行但没有后续exec的命令
我不确定这是否很重要。
X11/Xsession.options:use-ssh-agent
和X11/Xsession.d/90x11-common_ssh-agent:SSHAGENT=/usr/bin/ssh-agent
。我会尝试acct
和lastcomm
下一步。谢谢
lastcomm
完整会话的输出,而不仅仅是ssh-agent
过程。关键是要看各种程序以什么顺序启动。
ssh-agent
通常从开始/etc/X11/Xsession.d/90x11-common_ssh-agent
。可以通过use-ssh-agent
从中删除来抑制这种情况/etc/X11/Xsession
。这些文件正确吗?代理是否已启动然后被杀死或从未启动?(登录后安装acct
并运行lastcomm
以查看启动了哪些程序。)