平时远程连接linux服务器时,通常使用一些类似Xshell的工具进行连接。如果需要批量执行命令时,就需要一台一台的执行命令进行登陆,然后执行命令,如果服务器很多的情况下,就比较费时费力。
为了应对上述问题,可以使用SSH管理。ssh可以批量登陆服务器,批量执行命令。
1. ssh登陆
ssh ipXXX.XXX.XXX.XXX
输入yes后,输入对应的130服务器的密码,即可完成登陆。
注意,在首次进ssh远程登录时,会提醒需要输入yes,之后不会提醒。
如果在第一次登录时,也不想进行“yes”的输入,可以修改对应的配置文件,跳过验证。
vim /etc/ssh/ssh_config
#修改以下内容
StrictHostKeyChecking no
去掉注释并,修改值为 no
清空之前的记录
vim .ssh/known_hosts
进行ssh登录,发现不再需要验证。
2. 密钥
ssh远程连接服务器时,依旧需要人工输入服务器密码,才能进行登录,在服务器数量较多的情况下,依旧费时费力。
采用密钥的方式进行登录。
2.1 生成密钥
ssh-keygen -t rsa
之后一直回车即可。
生成公私钥,在.ssh文件夹下。
id_rsa 私钥 可以理解为是一把钥匙
id_rsa.pub 公钥 可以理解为是一把金锁
2.2 发送公钥到目标服务器
执行命令
ssh-copy-id 192.168.116.130
输入服务器密码后,看到如下提示表示成功
再次使用ssh连接登陆,
发现可以直接进行登录,并不用进行任何交互式的输入。
2.3 SSH公钥批量下发
下发ssh公钥时,依旧需要输入服务器密码。在服务器较多时,还是会花费大量的精力。
使用sshpass自动输入密码,
yum install sshpass -y
sshpass -p '123456' ssh-copy-id 192.168.116.130
编写批量下发公钥的shell脚本
vim deploy_rsa.sh
#!/bin/bash
IFSBAK=$IFS
IFS=$'\n'
for line in $(cat /root/deployhost);do
myhostname=$(echo "$line" | awk '{print $1}')
myip=$(echo "$line" | awk '{print $2}')
mypwd=$(echo "$line" | awk '{print $3}')
sshpass -p "$mypwd" ssh-copy-id -i /root/.ssh/id_rsa.pub $myip
done
IFS=$IFSBAK
准备deployhost服务器信息文件
文件内容包含,服务器名称,ip,密码。
执行脚本进行ssh公钥批量下发。
sh deploy_rsa.sh
测试连接130 跟 131 服务器
连接成功。