文章目录
一.SSH服务
1.什么是SSH?
- SSH (Secure Shel1) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
- SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
2.OpenSSH服务器
SSH (Secure Shell) 协议 是一种安全通道协议 对通信数据进行了加密处理,用于远程管理 |
SSH
客户端
: putty、xshell、CRT、MobaXterm、Finalshell
SSH
服务器
: Openssh
3.OpenSSH服务器配置文件
服务名称:
sshd
服务端主程序:
/usr/sbin/sshd·
服务端配置文件:
/etc/ssh/sshd config
- openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。
- centos 7 系统默认已安装openssh相关软件包,并将ssh服务添加为开机自启动。
执行“systemctl start sshd”命令即可启动sshd服务。默认端口使用的22端口。
ssh_confiog 和 sshd_config 都是ssh服务器的配置文件
二者区别在于前者是针对客户端的配置文件,后者是针对服务端的配置文件。
ssh服务端主要包括两个服务功能,ssh远程连接和sftp服务
二.ssh远程登录方式
ssh 【选项】 nanjing192.168.90.20
当用户第一次登求SSH服务器时,必须接受服务器发来的
ECDSA密钥
(根据提示输入”yes”)后才能继续验证。接收的信息将保存到~/.ssh/known_hosts 文件中。密码验证成功以后,即可登录目标服务器的命今行环境中了。
-P: 指定非默认的端口号,缺省时默认使用 22端口
ssh -p 12345 nanjing@192.168.80.10 //指定端口远程控制
示例:远程登录其他主机 |
(1):首先验证是否安装
ssh
:
[root@whw ~]# rpm -q openssh
openssh-7.4p1-21.el7.x86_64
(2)验证是否开启sshd服务:
(3)查看ssd服务配置文件:
(4)sshd_config配置文件的常用选项设置:
-
vim /etc/ssh/sshd_config
#进入配置sshd配置文件
常用选项配置 | |
---|---|
Port 22 | 监听端口为 22 |
ListenAddress 0.0.0.0 | 监听地址为任意网段,也可以指定openssH服务器的具体IP |
LoginGraceTime 2m | 登录验证时间为 2 分钟 |
PermitRootLogin no | 禁止root 用户登求 |
MaxAuthTries 6 | 最大重试次数为 6 |
PermitEmptyPasswords no | 禁止空密码用户登录 |
UseDNS no | 禁用 DNs 反向解析,以提高服务器的响应速度 |
(6).使用centos远程连接:
1.更改端口号:
vim sshd_config
Port 2222 //端口号改为2222
systemctl stop firewalld
setenforce 0 //更改端口号一定要关闭防火墙
systemctl restart sshd //重启配置文件
netstat -natp | grep sshd //查看监听端口是否更改
2.更改监听地址
vim sshd_config
ListenAddress 192.168.174.71 //更改为网卡地址
netstat -natp | grep sshd //查看监听地址是否更改
3.限制root用户登录
vim sshd_config
PermitRootLogin no //限制root登录
ssh root@网卡地址 (端口号不是默认需要加-p) //尝试登录
4.禁止空密码用户登录:
[root@whw ssh]# vim sshd_config
PermitEmptyPasswords no //禁止空密码用户登录
[root@whw ssh]# systemctl restart sshd
[root@whw ssh]# useradd wang
[root@whw ssh]# echo 123456 | passwd --stdin wang
更改用户 wang 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@whw ssh]# passwd -d wang
清除用户的密码 wang。
passwd: 操作成功
尝试wang用户空密码登录无法连接
尝试wang用户空密码登录成功连接
[root@whw ssh]# vim sshd_config
PermitEmptyPasswords yes //允许空密码用户登录
[root@whw ssh]# systemctl restart sshd
5.设置白名单
[root@whw pam.d]# vim /etc/ssh/sshd_config
AllowUsers zhangsan lisi wangwu@192.168.174.71 //设置白名单
[root@whw pam.d]# systemctl restart sshd
[root@whw pam.d]# useradd zhangsan
[root@whw pam.d]# echo 123456 | passwd --stdin zhangsan
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@whw pam.d]# useradd lisi
[root@whw pam.d]# echo 123456 | passwd --stdin lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@whw pam.d]# useradd wangwu
[root@whw pam.d]# echo 123456 | passwd --stdin wangwu
更改用户 wangwu 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@whw pam.d]# vim /etc/ssh/sshd_config
尝试用当前地址主机远程连接
尝试用不同网卡地址主机远程连接
因为在ssh配置中设置了wangwu用户只局限在192.168.174.71地址登录;所以别的用户无法登录
6.设置黑名单
[root@whw pam.d]# vim /etc/ssh/sshd_config
DenyUsers lisi wangwu@192.168.174.71
[root@whw pam.d]# systemctl restart sshd
尝试远程连接登录
三.sshd服务验证方式
ssd服务分为
密码验证
,
密钥验证
-
密码验证
对服务器中本地系统用户的登录名称,密码进行验证。简便,但是可能会被暴力破解 -
密钥对验证
要求提供相匹配的密钥信息才能通过验证,通常先在客户端中创建一对密钥文件(公钥,私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥,私钥进行加密/解密关联验证。能增强安全性,且可以免交换登录。
公钥和私钥的关系:
- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
- 不能根据一个密钥来推算出另一个密钥。
- 公钥对外公开,私钥只有私钥的持有人才知道
配置密钥对验证:
-
通过ssh-keygen工具为当前用户建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的”-t”选项用于指定算法类型)
- 将公钥文件复制到192.168.102.10主机上
[root@whw ~/.ssh]# scp -P 2345 id rsa.pub root@192.168.136.71:/opt
root@192.168.136.71's password:
id_rsa,pub 100% 392 717.9KB/s 00:00
[root@whw ~/.ssh]
-
在目标主机上查看到公钥文件,使用cat查看公钥文件的密钥信息
四.ssh密钥对面交互登录
- 使用没有密码的密钥对
ssh-keygen -t rsa/ecdsa //一路回车,不设置密码
ssh-copy-id -i 公钥文件 //目标主机用户@目标主机IP/主机名
- 创建ssh会话代理(只能在当前会话中有效)
ssh-agent bash 在当前登录环境中实现一个代理
ssh-add 输入这个密钥对的密码
输入以上命令后就可以实现免密码登录,
只能在当前会话中有效
退出当前会话就会消失这个代理
[rootedz888 ~/.ssh]# ssh-agent bash
[rootedz888 ~/.ssh]# ssh-add
Enter passphrase for /root/.ssh/id rsa:Identity added: /root/.ssh/id rsa (/root/.ssh/id rsa)
[rootedz888 ~/.ssh]# ssh zhangsan@192.168.102.10 -p 2345
Last login: Sat Apr 22 18:38:42 2023 from 192.168.102.20