一.Openssh的功能
1.sshd服务的用途
作用:可以实现通过网络在远程主机中开启安全shell的操作
Secure SHell --->ssh #客户端(c:做测试)
Secure SHell daemon --->sshd #服务端(s:做配置)
2.安装包: openssh-server
3.主配置文件: /etc/ssh/sshd_conf
4.默认端口: 22
5.客户端命令: ssh
二.ssh
1.基本用法:
ssh [-l 远程主机用户]:
ssh -l root 172.25.254.200 ##通过ssh命令在200主机中以root身份开启远程shell[westos@westos_student70 Desktop]$ ssh -l root 172.25.254.200
The authenticity of host '172.25.254.200 (172.25.254.200)' can't be established.
ECDSA key fingerprint is SHA256:j1eksGwobdp+MVYQXJB+MoyMeCMt6FIYzp5egJFXyws.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ##身份证明生成过程确认
#作用# :当收入后
200主机会向当前主机发送身份公钥,并保存此公钥到~/.ssh/know_hosts
200主机持有私钥当客户主机再次连接时会对客户主机进行身份验证
##hostnamectl set-hostname westoshost200.westos.org #修改主机名字##
##################实验:客户端连接服务端###################
需要两台虚拟机nodea(170)、nodeb(200)
s:服务端(作配置)(nodea)
c:客户端(做测试)(nodeb)
实验让客户端连上服务端(要让nodeb连接上nodea)nodeb # ssh -l root 172.25.254.117 #连接
# ls -ld /root/.ssh #查看
nodea # cd /etc/ssh/ #进出ssh目录
# ls #查看
# cat ssh_host_ecdsa_key.pub #查看密钥
nodeb # cat /root/.ssh/known_hosts #查看密钥(客户端和服务端的密钥相同就可以连接成功)
nodea # rm -rf ssh_host_* #删掉刚才连接的密钥
# ls #查看
# systemctl restart sshd #重新启动sshd服务
# ls #查看
# cat ssh_host_ecdsa_key.pub #查看新的密钥
nodeb # ssh -l root 172.25.254.117 #再次连接会报错(因为服务端删掉了刚才相同的密钥,产生新的密钥)
# vim /root/.ssh/known_hosts #删掉vim里之前的旧密钥(根据刚才的报错删)
# ssh -l root 172.25.254.117 #重新连接
# cat /root/.ssh/known_hosts #查看密钥(和服务端的新密钥相同)
#当连接因为认证问题被拒绝时解决方案#
vim ~/.ssh/know_hosts ##在此文件中删除报错提示相应的行即可
#ssh 常用参数#
ssh -l #指定登陆用户 ssh -i #指定私钥 ssh -X #开启图形 ssh -f #后台运行 ssh -o #指定连接参数 # ssh -l root@172.25.254.200 -o "StrictHostKeyChecking=no" -->首次连接不需要输入yes ssh -t #指定连接跳板 # ssh -l root 172.25.254.200 -t ssh -l root 172.25.254.170
三.sshd key认证
1.认证类型
1)对称加密:加密和解密是同一串字符;容易泄漏、可暴力破解、容易遗忘。
2)非对称加密:加密用公钥,解密用私钥、不会被盗用、攻击者无法通过无密钥方式登陆服务器。
2.生成非对称加密密钥
#方法1 :
nodea: ssh-keygen [一直按回车键]
#Generating public/private rsa key pair.
#Enter file in which to save the key (/root/.ssh/id_rsa): ##输入保存密钥文件
#Enter passphrase (empty for no passphrase): ##密钥密码
#Enter same passphrase again: ##确认密码
#Your identification has been saved in /root/.ssh/id_rsa. ##私钥
#Your public key has been saved in /root/.ssh/id_rsa.pub. ##公钥
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.170 #对服务器加密
cd /root/.ssh/
ls
【authorized_keys id_rsa id_rsa.pub known_hosts】
scp /root/.ssh/id_rsa root@172.25.254.200:/root/.ssh/ #把170主机的私钥给200主机传过去
nodeb:
测试:nodeb在登陆nodea的时候不需要密码
ssh -l root 172.25.254.170 #nodeb直接登陆nodea不需要密码
#方法2:(实验前要把方法一中产生的私钥删掉,保证实验的准确)
nodea: rm -rf /root/.ssh/*
ssh-keygen -f /root/.ssh/id_rsa -P ""
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.170
scp /root/.ssh/id_rsa root@172.25.254.200:/root/.ssh/
测试:nodeb在登陆nodea的时候不需要密码
四.sshd 安全优化参数详解
实验前准备:
setenforce 0
systemctl disable --now firewalld #开机时不启动防火墙,并且当前不启动防火墙服务
1.PasswordAuthentication yes|no #是否开启原始密码认证方式
#rpm -qc openssh-server #查询配置文件
vim /etc/ssh/sshd_config #修改配置文件
73行:PasswordAuthentication no #改为no,不开启原始密码认证方式
systemctl restart sshd #修改之后一定要重启sshd服务
测试:在真机(70)中登陆170主机,不需要密码;nodeb(200)在上个实验中有密钥,可以直接登陆,实验效果清楚还是要在真机中登陆
2.PermitRootLogin yes|no #对超级用户登陆是否禁止
vim /etc/ssh/sshd_config
46行改为no
systemctl restart sshd #修改之后一定要重启sshd服
3.设定端口
vim /etc/ssh/sshd_config
17行端口号改为:2222 #一定要把密码认证改yes
systemctl restart sshd
4.用户黑白名单
vim /etc/ssh/sshd_config
21行左右添加
systemctl restart sshd
###实验完成后把刚才修改的数据恢复###



