如何强制 SSH 使用图形提示(例如 GTK)而不是使用终端的标准提示请求密码?
我试过设置,SSH_ASKPASS=/usr/bin/ssh-askpass但似乎没有效果。
问题是 openssh 文档说的事实
如果 ssh没有与之关联的终端,但设置了 DISPLAY 和 SSH_ASKPASS,它将执行 SSH_ASKPASS 指定的程序并打开 X11 窗口以读取密码。
在命令行启动,在我的情况下的结果的SSH git push,将具有与其相关联的终端,所以SSH_ASKPASS逻辑似乎被忽略。
请注意,我指的不是ssh-add,而是针对存在密钥对但受密码保护的主机的通用 ssh 调用。
man ssh 说:
SSH_ASKPASS
If ssh needs a passphrase, it will read the passphrase from the
current terminal if it was run from a terminal. If ssh does not
have a terminal associated with it but DISPLAY and SSH_ASKPASS
are set, it will execute the program specified by SSH_ASKPASS
and open an X11 window to read the passphrase.
Run Code Online (Sandbox Code Playgroud)
我希望 SSH 使用 askpass 程序,即使它是从终端运行的。
有时,我必须连接到服务器,在那里显示密码提示会有一些延迟(可能是由于网络问题,也可能是由于尝试反向 DNS 查找,……)。我很生气并切换到其他东西,而忘记了尝试的连接。(插入关于金鱼注意力跨度的笑话。)当我终于回到它时,提示超时,即使是正确的密码也会导致连接关闭。
密钥将是一种解决方案,但并非我使用的每个系统都有我常用的 SSH 密钥。不过我一般用的是Ubuntu系统,Ubuntu默认安装了SSH askpass程序。
但是,如果弹出一个询问通行证窗口,我会立即意识到这一点。这对我来说是一个足够好的妥协,只要我能让它工作。