了解自动登录ssh工具 sshpass<<<<<<
实现sshpass前提,一定要将对方主机加入到主机known_hosts列表里,不用输yes和no)
sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码(本机known_hosts文件中有的主机才能生效)。
它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
- o替代了yes和no选项,等于把密码写在交互式里,后续操作不需要再输入密码
而SSH 客户端的 StrictHostKeyChecking 配置指令,可以实现当第一次连接服务器时,自动接受新的公钥**
单就以上这段文字的描述来说,我的感觉是一个字,看的头晕!
让我们直接来了解操作方法吧!
第一种直连方式:
基于交互式的方法:
示例:sshpass -p 159059 ssh -o StrictHostKeyChecking=no root@10.0.0.7
执行该命令,只要对方主机和密码无误,不同系统可以直接相连 执行命令
非交互式: sshpass -p 159059 ssh-copy-id -i .ssh/id_rsa.pub -o StrictHostKeyChecking=no root@10.0.0.7
第二种直连方式,脚本mode
**这个模式也是可以实现同时管理多台机器**
#!/bin/bash
HOSTS="
10.0.0.7
10.0.0.9
10.0.0.10
"
PASS=159059
[ -f /root/.ssh/id_rsa ] || ssh-keygen -P “” -f /root/.ssh/id_rsa &> /dev/null
apt -y install sshpass &> /dev/null
for i in $HOSTS;do
{
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub $i &> /dev/null
}&
done
wait
说明:若有其他主机密码不统一的,可以执行以下命令进行临时更改 echo 密码| passwd --stdin root
另外,该操作只是单向进行控制
谢谢观赏