我想知道使用 SSH_ASKPASS 从脚本启动 SSH 会话,所以我写了一个这样的脚本:
export SSH_ASKPASS="/path/passwordScript"
setsid ssh "username"@"host"
其中 passwordScript 是一个 bash 脚本,它像这样回显用户的密码:
#!/usr/bin/env bash
echo "the_password"
其中“the_password”是用户的密码。此过程运行良好,SSH 会话连接成功。
出于好奇,我尝试将 passwordScript 更改为这样的 ac 脚本(显然这是未编译的版本):
#include <stdio.h>
main()
{
printf("the_password\n");
}
令我惊讶的是,SSH 会话将不再连接。输出如下所示:
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
我想也许 bash 解释器实际上并没有被使用,而 sh 默认情况下正在使用或其他东西。但是,如果我像这样在 python 中设置 passwordScript,则 SSH 会话可以正常工作:
#!/usr/bin/env python
print "the_password"
所以我的问题是为什么 ASK_PASS 不适用于我的 c 程序?
(顺便说一句,我知道 SSH 密钥更适合这种情况;这只是一个学习练习)
谢谢!