目录
1.Openssh的功能
1.1 sshd服务的用途
作用:可以实现通过网络在远程主机中开启安全shell的操作
Secure SHell ---->> ssh #客户端
Secure SHell daemon ---->> sshd #服务器端
daemon:守护进程 控制与服务相关的系统任务的进程
1.2安装包
openssh-server
1.3主配置文件
/etc/ssh/sshd_conf
1.4.默认端口
22
1.5客户端命令
ssh
1.6ssh的基本用法
ssh -l 远程主机用户 主机ip或hostname #ssh命令在远程主机中以root登陆第一次登陆会进行身份认证,输入yes后,目标主机会向当前的主机发送身份公钥,并保存到~/.ssh/know_hosts
目标主机持有私钥,会在当前主机再次连接时进行身份验证
当主机身份验证改变时,目标主机将会拒绝连接并提示消息
HOST IDENTIFICATION HAS CHANGED
被拒绝时的解决方案
vim ~/.ssh/know_hosts #删除错误提示中对应行的错误信息即可
1.7ssh常用参数
-l | #指定登陆用户 |
-i | #指定私钥 |
-X | #打开图形,目的主机可以不打开,但当前主机必须有图形 |
-f | #进程开启后台运行 |
-o | #指定连接参数 # ssh -l root@172.25.254.x -o "StrictHostKeyChecking=no" 首次连接不需要输入 yes |
-t | #指定连接跳板 #在当前主机权限不够访问服务器时,需要以权力够的主机为跳板去访问服务器,服务器上显示的ip是跳板主机的ip |
1.8把主机变成路由器
firewall-cmd --add-masquerade #添加地址伪装,必须开启主机没有主动地址伪装的功能,只有开启才可以用wifi上网,有线网卡接收上网请求发送无线网卡,无线网卡连接外网
firewall-cmd --list-all #查看防火墙状态当一个主机连接wifi设置了地址伪装,有线网卡172.xx.xxx.xx 无线192.168.xxx.xx
另一个主机想要设置wifi主机的网关去上网,必须设置172.xx.xxx.xx的网关,192.168.xxx.xx不接收上网请求
2.sshd-key认证
2.1认证类型
对称加密 加密和解密用同一串字符,容易遗忘,容易泄漏,可暴力破解
非对称加密 公钥用来上锁,私钥用来开锁,攻击者无法通过无密钥方式登陆服务器,不会被盗用
2.2生成非对称加密密钥
#密钥不一定非要在服务器制作,可以在别的主机上制作
#公钥用来上锁,私钥用来开锁ssh-keygen 设置交互式的加密密钥
Enter file in which to save the key (/root/.ssh/id_rsa): #设置密钥存放的位置,可以任意,但后续要修改配置文件的多个地方,建议默认
Enter passphrase (empty for no passphrase): #设置密钥密码
非交互式生成加密密钥
ssh-keygen -f /root/.ssh/id_rsa -P "" #-f指定密钥存放的位置, -P"" 设置密钥的密码
2.3对服务器加密
ssh-copy-id -i /root/.ssh/id_rsa.pub username@serverip
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.121 #给172.25.254.121的root上锁,需要取得服务器认可,输入121的密码,添加成功后登陆不需要密码
ls /root/.ssh/ #上锁的主机在/root/.ssh/会有一个authorized_keys,里面的内容与公钥相同
ssh -i /root/.ssh/id_rsa -l root 172.25.254.121 #用指定密钥登陆121,因为有时可能有多个密钥去连接多个主机,所以要选择指定密钥
3.sshd 安全优化参数详解
必须要在需要优化的服务器中设置
3.1设置密码登陆
设置能否用密码登陆,如果用户没有设置过密钥,那么就无法登陆
vim /etc/ssh/sshd_config #设置远程连接配置文件
73行-PasswordAuthentication yes #设置是否能用密码登陆systemctl restart sshd
3.2 端口号设置
设置端口号,如果用户不知道端口号,那么就无法登陆
setenforce 0 #设置后可以修改端口号
systemctl disable --now firewalld #关闭防火墙,避免产生影响
vim /etc/ssh/sshd_config #设置远程连接配置文件
17行-Port 22 #设置端口号,其他用户不知道端口号无法登陆systemctl restart sshd
3.3禁止对超级用户登陆
设置后无法远程连接超级用户
vim /etc/ssh/sshd_config
46行-PermitRootLogin yes|no #是否对root进行登陆
systemctl restart sshd
3.4黑白名单
设置黑白名单
需要自己写入,可写在任意行白名单
AllowUsers user user2 #设置白名单,处于白名单的用户可以被远程连接,其他用户无法被远程连接systemctl restart sshd
黑名单
DenyUsers user user2 #设置黑名单,处于黑名单的用户不可以被远程连接,其他用户可以被远程连接
systemctl restart sshd