从面板启动器启动 ssh 时不使用 ssh-agent(通过“gnome-terminal --command”)

从面板启动器启动 ssh 时不使用 ssh-agent(通过“gnome-terminal --command”)

我已拥有一切设置这样,当我从 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"

相关内容