标签: perl ssh
我有一个脚本,它使用ssh密钥连接到特定用户的远程服务器。但是,如果用户信息已更改且密钥未更新,则脚本将挂起以等待密码。
如何在提示输入密码时捕获此信息并抛出DIE?
例如,如果我使用:
system("ssh -C USER@someserver.com -i /.ssh/USER.key ...");
和USER在USER.key中不是同一个USER,它挂起等待密码。我宁愿让它死。
在不使用perl模块的情况下处理此问题的最佳方法是什么?
答案 0 :(得分:7)
试试这个:
system('ssh -o BatchMode=yes -C USER@someserver.com -i /.ssh/USER.key ...');
BatchMode选项将阻止ssh提示输入密码,并且只有在需要密码时才会终止。
答案 1 :(得分:4)
当您使用system时,您放弃对ssh的控制权。我建议您查看ssh的选项。
system
ssh
此外,您应该使用warnings。
答案 2 :(得分:0)
您是否考虑过将CPAN提供的任何SSH模块用作Net :: SSH2或Net :: OpenSSH?