我需要创建一个自动向OpenSSH ssh客户端输入密码的脚本。
假设我需要使用密码a1234b SSH到myname@somehost。
我已经试过了……
#~/bin/myssh.sh
ssh myname@somehost
a1234b
...但这并不奏效。
如何将此功能放入脚本中?
我需要创建一个自动向OpenSSH ssh客户端输入密码的脚本。
假设我需要使用密码a1234b SSH到myname@somehost。
我已经试过了……
#~/bin/myssh.sh
ssh myname@somehost
a1234b
...但这并不奏效。
如何将此功能放入脚本中?
当前回答
我设法让它工作了:
SSH_ASKPASS="echo \"my-pass-here\""
ssh -tt remotehost -l myusername
其他回答
我有一个更好的解决方案,包括登录您的帐户,而不是更改为根用户。 它是一个bash脚本
http://felipeferreira.net/index.php/2011/09/ssh-automatic-login/
我使用下面的解决方案,但你必须安装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命令,你就会进入你的机器,没有密码提示。
注意:
我的机器可以是你选择的任何命令。 如果在这个任务中安全性对您来说不重要,而您只想自动化工作,您可以使用此方法。
在寻找这个问题的答案几个月后,我终于找到了一个更好的解决方案:写一个简单的脚本。
#!/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>
完成了!
这基本上是abbotto的答案的扩展,有一些额外的步骤(针对初学者),使启动你的服务器,从你的linux主机,非常容易:
编写一个简单的bash脚本,例如:
#!/bin/bash
sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no <YOUR_USERNAME>@<SEVER_IP>
保存文件,例如'startMyServer',然后在你的终端上运行这个命令使文件可执行:
sudo chmod +x startMyServer
将文件移动到“PATH”变量中的文件夹(在终端中运行“echo $PATH”查看这些文件夹)。例如,将它移动到'/usr/bin/'。
瞧,现在你可以通过在终端中输入'startMyServer'进入服务器。
P.S.(1)这不是很安全,请查看ssh密钥以获得更好的安全性。
附注(2)SMshrimant的答案很相似,对一些人来说可能更优雅。但我个人更喜欢使用bash脚本。
不同的我
sshpass -p PASSWORD ssh USER@SERVER
后缀II
#!/usr/bin/expect -f
spawn ssh USERNAME@SERVER "touch /home/user/ssh_example"
expect "assword:"
send "PASSWORD\r"
interact