16,SSH远程登录服务

1,远程连接服务概念介绍
SSH: 系统默认配置 22 默认可以使用root用户进行登录 数据信息进行加密
TELNET:网络设备默认开启 23 默认只能使用普通用户进行登录 数据信息显示明文
用wireshark抓包:分别抓SSH协议登录包和Telnet包(一个密文,一个明文)
16,SSH远程登录服务
16,SSH远程登录服务
2,SSH协议密钥登录原理:
1)服务端生成密钥对(公钥和私钥也就是锁和钥匙)
2)服务端向其他主机发起公钥文件或者说锁锁存放此/root/.ssh/authorized_keys
3)服务端通过私钥去登录其他主机

3,操作
创建密钥对
ssh-keygen
16,SSH远程登录服务
2,将公钥或者说锁发送到其他主机
16,SSH远程登录服务
免密登录
16,SSH远程登录服务
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 密码登录不了。其他主机想要登录这个主机通过输入账号密码是登不进去了,这个时候只有管理端通过密钥对登录了
16,SSH远程登录服务

猜你喜欢

转载自blog.51cto.com/13858002/2433367