我正在尝试使用 .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