SSH密码在shell脚本中

时间:2011-05-31 18:30:48

标签: shell ssh

我想写一个像

这样的shell脚本
command1    
ssh vivek@remotehost 
    fire command on remote host

现在我在pass.txt中有密码。但是当我用文件更改stdin时。它不是从文件中读取密码。

script.sh < password.txt 

提示输入密码代替从文件中读取密码。 我做错了什么?

第二个问题是shell脚本没有显示触发的命令。有没有办法,我可以通过它显示被解雇的命令?

注意: 我在远程系统上没有基于密钥的访问权限。我只能使用基于密码的登录ssh。

3 个答案:

答案 0 :(得分:3)

您可以使用ssh-agent或expect(编程语言)来执行此操作。

答案 1 :(得分:1)

OpenSSH ssh不从stdin读取密码,而是从/ dev / tty读取密码。这就是为什么你必须使用Expect或其他类似的工具来自动化它。

plink是另一个客户端,也可用于Linux / Unix,它在命令行上接受密码作为参数......虽然这有一些丑陋的安全隐患。

答案 2 :(得分:1)

好的,仅举几个选项:sshpass是一个专为“欺骗”常规openssh客户端以非交互方式接受密码的任务而开发的工具。