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

Alo*_*dal 6 ssh ssh-agent xfce-panel

我已经设置好所有内容以便在我登录并ssh-add从 gnome 终端窗口使用 ssh-agent 添加正确的身份后,当我调用ssh myserver.

现在我想让它更容易并创建一个可以运行的面板启动器

gnome-terminal --command "ssh myserver"
Run Code Online (Sandbox Code Playgroud)

但是虽然这确实调用了我想要的,但它忽略了 ssh-agent,即它要求输入 pass-phrase。它每次都这样做,即使我提供了 PP,下次它再次询问时也是如此。

我究竟做错了什么?谁能解释为什么这不起作用?


补充说明:

  • 运行gnome-terminal --command "ssh myserver从已经打开的终端工作确定

  • ssh myserver部分更改为bash -c "ssh myserver"正确引用并没有帮助。

  • ssh myserver在启动器中使用right 也无济于事:密码短语提示显示为一个简单的 GUI 窗口(除非我选中了“在终端中运行”选项,在这种情况下,行为与上述相同)

  • 这是 Ubuntu 12.04

  • 将 -vvv 添加到两个 ssh 命令,这里是失败的(并要求 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': 
    
    Run Code Online (Sandbox Code Playgroud)

    而成功的 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).
    [...]
    
    Run Code Online (Sandbox Code Playgroud)

    (然后很多事情显然不相关......)

    我没有找到任何有用的调试消息,也没有在系统/身份验证日志中找到任何内容。

kyn*_*nan 1

我假设您按照链接的文章进行操作并修改了您的~/.bashrc. 但是,~/.bashrc当您从面板启动器运行命令时,可能永远不会获取该信息。

一种简单的调试方法是将date > /tmp/bashrc_sourced其添加到末尾~/.bashrc,并在调用面板启动器时检查当前时间是否打印到文件中。

相关说明:您可能想查看keychain,它是专门为您管理 ssh-agent 而设计的。


fue*_*ero 0

我建议验证 SSH_AUTH_SOCK 是否正确传递。

我将其作为 KDE 登录脚本的一部分:

export SSH_AUTH_SOCK="${HOME}/.ssh-agent.sock"
rm -f ${SSH_AUTH_SOCK}
ssh-agent -a ${SSH_AUTH_SOCK}
Run Code Online (Sandbox Code Playgroud)

这在我的 .bashrc 中:

export SSH_AUTH_SOCK="${HOME}/.ssh-agent.sock"
Run Code Online (Sandbox Code Playgroud)