我想强制 ssh 始终使用SSH_ASKPASS. 就我而言,该程序只是一个返回密码的 bash 脚本。
问题是,正如 ssh 文档所说:
如果 ssh 需要密码短语,如果它是从终端运行的,它将从当前终端读取密码短语。
因此,如果我从终端运行 ssh,SSH_ASKPASS则会被忽略。
有一个类似的问题: Tell SSH to use a graphics prompt for key passphrase
它建议为 ssh 创建一个别名,就像这样
$ alias ssh="setsid ssh"
Run Code Online (Sandbox Code Playgroud)
但对我不起作用,因为我不直接调用 ssh,而是从 git 或 rsync 调用。
我还在OpenSSH Bugzilla 中发现了一个未解决的问题,要求修复,但在 2002 年开放,所以我认为不会实施。
我正在考虑可能很奇怪的解决方案:
有更好的建议吗?
每个ssh手册:
如果
ssh没有与其关联的终端,但设置了 DISPLAY 和 SSH_ASKPASS,它将执行 SSH_ASKPASS 指定的程序。
因此,您需要取消与终端的关联(例如通过添加管道)并确保DISPLAY未设置(如果您想使用终端作为密码短语)。
简单的例子:
echo foo | SSH_ASKPASS=/my/cmd DISPLAY= ssh ...
Run Code Online (Sandbox Code Playgroud)
与以下相同ssh-add:
$ echo foo | SSH_ASKPASS=/my/cmd DISPLAY= ssh-add id_rsa
ssh_askpass: exec(/my/cmd): No such file or directory
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26500 次 |
| 最近记录: |