如何在 SSH 命令中包含密码?(想要制作 shell 脚本)

如何在 SSH 命令中包含密码?(想要制作 shell 脚本)

我正在尝试使用 .sh 脚本在启动时通过 SSH 连接到服务器,但这需要我输入要通过 SSH 连接到的服务器上的帐户的密码。我进行了一些 RTFMing,并在“-o”中看到它有“PasswordAuthentication”,但我不确定如何使用或是否可以使用该选项。由于这将在 shell 脚本中,显然我希望将密码放在该文件中,或者无论如何不必在每次运行脚本时手动输入密码。

答案1

我现在正在使用手机,所以无法给你详细的答案。我认为,这里正确的解决方案是使用基于密钥的身份验证。基本上,你使用 ssh-keygen(我认为)来生成公钥/私钥对。由于你需要脚本访问,请在提示时输入空白密码。然后,按照相关的手册页在服务器上安装公钥,并在适当的位置安装私钥。

现在您应该能够安全地登录该服务器,无需密码。请注意,我所说的安全是指只要您的用户帐户没有被盗用。

答案2

我建议您使用 ssh-keygen 生成一个 ssh 密钥并使用它来登录到您的远程 ssh 服务器。

解释该程序这里

答案3

ServerFault 上的这个帖子建议两种方法,一种方法是sshpass

sudo apt-get install sshpass
sshpass -p your_password ssh user@hostname

其中一个是expect

#!/usr/bin/expect -f
#  ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]

spawn ssh $name@$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact

相关内容