**1,远程连接服务概念介绍 **
SSH: 系统默认配置 22 默认可以使用root用户进行登录 数据信息进行加密
TELNET:网络设备默认开启 23 默认只能使用普通用户进行登录 数据信息显示明文
用wireshark抓包:分别抓SSH协议登录包和Telnet包(一个密文,一个明文)
**2,SSH协议密钥登录原理: **
1)服务端生成密钥对(公钥和私钥也就是锁和钥匙)
2)服务端向其他主机发起公钥文件或者说锁锁存放此/root/.ssh/authorized_keys
3)服务端通过私钥去登录其他主机
**3,操作 **
创建密钥对
ssh-keygen
2,将公钥或者说锁发送到其他主机
免密登录
**4,解决第一次发送公钥有yes/no问题 **
1)通过man ssh找到StrictHostKeyChecking
命令:ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.41 -o StrictHostKeyChecking=no
解决第一次发送公钥还是要输入密码问题 1)先装个sshpass工具 yum -y install sshpass sshpass -proot123 ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.41 -o StrictHostKeyChecking=no
**5,批量分发公钥到多台主机 **
for i in {41,200}
do
sshpass -proot123 ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.${i} -o StrictHostKeyChecking=no
[ $? -eq 0 ] && echo "ok"
done
**6,即使有5步骤的操作,但是生成密钥对还是要手动回车操作,如果生产密钥对也可以免交互,则整个步骤我们都可以实现批量管理了 ** 来,写一个更完善的脚步
#!/bin/bash
if [ -f /root/.ssh/id_rsa ];then
echo -------密钥对文件已经存在--------
else
echo -------正在生成密钥对文件--------
ssh-keygen -f /root/.ssh/id/id_rsa -N ''
fi
(生成密钥对要手动回车的部分一是要指定文件位置,我们-f参数先指定,二是要确认密码我们-N参数指定新密码''表示后面空,就是说没有新密码。这样生成密钥对的操作 也是免交互了)
for i in {41}
do
sshpass -proot123 ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.${i} -o StrictHostKeyChecking=no >/dev/null 2>&1
[ $? -eq 0 ] && echo "ok"
done
**7,优化SSH **
在所有其他主机上修改
1)监听端口22
改成9999
2)监听ip0.0.0.0 (这里的所有表示,所有主机自己有的ip,一个主机可以有多个ip。你连我的时候写上我自己的ip。不是表示来连接我的主机的ip,ssh不通过限制客户端的ip来限制访问,跟rysnc,nfs,nginx不一样不要搞混了
改成监听某个网段或ip,172.16.1.0 表示允许监听网段或ip,ssh远程
3)密码验证PasswordAuthentication yes
改为PasswordAuthentication no 密码登录不了。其他主机想要登录这个主机通过输入账号密码是登不进去了,这个时候只有管理端通过密钥对登录了