我想知道如何使用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更改为这样的c脚本(显然这是未编译的版本):
#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密钥更适合这种情况;这只是一个学习练习)
谢谢!
答案 0 :(得分:2)
我的猜测是SSH_ASKPASS检查返回码。如果我修改c程序以返回代码0,一切都按预期工作:
#include <stdio.h>
int main ()
{
printf("the_password");
return 0;
}