我需要创建一个自动向OpenSSH ssh客户端输入密码的脚本。

假设我需要使用密码a1234b SSH到myname@somehost。

我已经试过了……

#~/bin/myssh.sh
ssh myname@somehost
a1234b

...但这并不奏效。

如何将此功能放入脚本中?


当前回答

这应该在大多数情况下都有帮助(你需要先安装sshpass !):

#!/usr/bin/bash
read -p 'Enter Your Username: ' UserName;
read -p 'Enter Your Password: ' Password;
read -p 'Enter Your Domain Name: ' Domain;

sshpass -p "$Password" ssh -o StrictHostKeyChecking=no $UserName@$Domain

其他回答

我设法让它工作了:

SSH_ASKPASS="echo \"my-pass-here\""
ssh -tt remotehost -l myusername

我有一个更好的解决方案,包括登录您的帐户,而不是更改为根用户。 它是一个bash脚本

http://felipeferreira.net/index.php/2011/09/ssh-automatic-login/

在寻找这个问题的答案几个月后,我终于找到了一个更好的解决方案:写一个简单的脚本。

#!/usr/bin/expect

set timeout 20

set cmd [lrange $argv 1 end]
set password [lindex $argv 0]

eval spawn $cmd
expect "password:"
send "$password\r";
interact

把它放在/usr/bin/exp,所以你可以使用:

Exp <password> SSH <任何> Exp <password> SCP <anysrc> <anydst>

完成了!

我使用下面的解决方案,但你必须安装sshpass如果它还没有安装,使用sudo apt install sshpass安装它

现在你可以这样做,

sshpass-p *YourPassword* ssh root@IP

您还可以创建一个bash别名,这样就不必一次又一次地运行整个命令。 遵循以下步骤

cd ~

Sudo nano .bash_profile

在文件末尾添加以下代码

mymachine() {sshpass -p *YourPassword* ssh root@IP}

源. bash_profile

现在只要在终端运行mymachine命令,你就会进入你的机器,没有密码提示。

注意:

我的机器可以是你选择的任何命令。 如果在这个任务中安全性对您来说不重要,而您只想自动化工作,您可以使用此方法。

@abbotto的答案对我不起作用,不得不做一些不同的事情:

Yum install sshpass更改为- RPM -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/sshpass-1.05-1.el6.x86_64.rpm 使用sshpass的命令修改为- sshpass -p "pass" SSH user@mysite -p 2122