我已拥有一切设置这样,当我从 gnome-terminal 窗口登录并向 ssh-agent 添加正确的身份后ssh-add
,调用时无需再次输入密码ssh myserver
。
现在我想让它变得更简单,并创建一个可以运行的面板启动器
gnome-terminal --command "ssh myserver"
但虽然这确实调用了我想要的,但它忽略了 ssh-agent,即它要求输入密码。而且每次都是这样,即使我提供了 PP,下次它还是会再次询问。
我做错了什么?有人能解释一下为什么这不起作用吗?
进一步说明:
从已经打开的终端运行
gnome-terminal --command "ssh myserver
正常ssh myserver
将部分内容更改为并bash -c "ssh myserver"
加上适当的引用并没有帮助。在启动器中使用
ssh myserver
权限也没有帮助:密码提示显示为一个简单的 GUI 窗口(除非我选中“在终端中运行”选项,在这种情况下行为与上面描述的相同)这是 Ubuntu 12.04
在两个 ssh 命令中添加 -vvv,这里是失败的(并要求 PP)ssh 与成功的 ssh 开始不同的地方:
[...] debug1: Server accepts key: pkalg ssh-rsa blen 279 debug2: input_userauth_pk_ok: fp 5e:ad:5e:1f:7f:... debug1: key_parse_private_pem: PEM_read_PrivateKey failed debug1: read PEM private key done: type <unknown> Enter passphrase for key '/home/lennycz/.ssh/id_rsa':
而成功的 ssh 则表示
[...] debug1: Server accepts key: pkalg ssh-rsa blen 279 debug2: input_userauth_pk_ok: fp 5e:ad:5e:1f:7f:... debug1: Authentication succeeded (publickey). [...]
(然后很多事情显然不相关......)
我没有发现任何有用的调试消息,也没有在系统/身份验证日志中找到任何内容。
答案1
我假设您按照链接的文章并修改了您的~/.bashrc
。但是,~/.bashrc
当您从面板启动器运行命令时可能永远不会被获取。
一种简单的调试方法是添加date > /tmp/bashrc_sourced
到您的末尾~/.bashrc
,并检查当您调用面板启动器时当前时间是否打印到文件中。
相关说明:你可能需要查看钥匙链,它是专门为您管理 ssh-agent 而设计的。
答案2
我建议验证 SSH_AUTH_SOCK 是否正确传递。
我的 KDE 登录脚本中有此内容:
export SSH_AUTH_SOCK="${HOME}/.ssh-agent.sock"
rm -f ${SSH_AUTH_SOCK}
ssh-agent -a ${SSH_AUTH_SOCK}
这是我的.bashrc中的内容:
export SSH_AUTH_SOCK="${HOME}/.ssh-agent.sock"