实验要求
1.修改ssh服务器端口号
2.拒绝root账户远程登录
3.允许特定账户进行ssh登录,其它账户无法登录
4.ssh-keygen 免密登录
5.xshell使用密钥登陆
思路总结
修改ssh服务端口号,打开配置文件修改21行端口;拒绝root登录去掉配置文件及其子目录下的PermitRootLogin yes;允许特定用户登录,修改配置文件;ssh-keygen免密登录服务端产生公钥和私钥,客户端把公钥上传到服务端即可;xshell免密登录,在服务端创建空的公钥文件,之后打开shell创建公钥,把公钥复制在服务端的公钥文件中,最后使用xshell登录
实验步骤
1.修改ssh服务器端口号
服务端
yum install openssh-server 安装ssh服务
vim /etc/ssh/sshd_config 编辑ssh文件
其中关键信息说明如下
21.#Port 22 # 默认监听22端口,可修改
22.#AddressFamily any # IPV4和IPV6协议家族用哪个,any表示二者均有
23.#ListenAddress 0.0.0.0 # 指明监控的地址,0.0.0.0表示本机的所有地址(默认可修改)
24.#ListenAddress :: # 指明监听的IPV6的所有地址格式
26.#HostKey /etc/ssh/ssh_host_rsa_key # rsa私钥认证,默认
27.#HostKey /etc/ssh/ssh_host_ecdsa_key # ecdsa私钥认证
28.#HostKey /etc/ssh/ssh_host_ed25519_key # ed25519私钥认证
34 #SyslogFacility AUTH # ssh登录系统的时会记录信息并保存在/var/log/secure
35.#LogLevel INFO # 日志的等级
39.#LoginGraceTime 2m # 登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
40 PermitRootLogin yes # 允许管理员root登录
41.#StrictModes yes # 是否让sshd去检查用户主目录或相关文件的权限数据
42.#MaxAuthTries 6 # 最大认证尝试次数,最多可以尝试6次输入密码。
之后需要等待某段时间后才能再次输入密码
43.#MaxSessions 10 # 允许的最大会话数
49. AuthorizedKeysFile .ssh/authorized_keys # 选择基于密钥验证时,客户端生成一对公私钥之后,
会将公钥放到.ssh/authorizd_keys里面
65 #PasswordAuthentication yes # 登录ssh时是否进行密码验证
66 #PermitEmptyPasswords no # 登录ssh时是否允许密码为空
......
123.Subsystem sftp /usr/libexec/openssh/sftp-server #支持 SFTP ,如果注释掉,则不支持sftp连接
AllowUsers user1 user2 #登录白名单(默认没有这个配置,需要自己手动添加),
允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录
修改端口号
root@server \~\]# vim /etc/ssh/sshd_config 定位第21行,去掉# 后修改端口号 21 Port 2222
服务端操作,重启服务
root@server \~\]# systemctl restart sshd # 注意:ssh的服务名位sshd 注意:如果出现端口占用不能释放,使用如下命令测试一下: sudo semanage port -a -t ssh_port_t -p tcp 2222 执行此命令后,SELinux将允许ssh在tcp协议的备用端口上运行,从而确保了安全性和连接的稳定性。 \[root@server \~\]# yum install net-tools # 安装网络工具才可使用netstat命令 \[root@server \~\]# netstat -ntlp # 查看端口号是否已修改
客户端
客户端操作,ssh登录服务端
root@node1 \~\]# ssh root@192.168.48.130 登录服务端的ip地址
尝试登录被拒绝,22端口已关闭

以2222的端口号登录
root@node1 ~]# ssh -p 2222 root@192.168.48.130 # 指明以2222端口登录服务端

2.拒绝root账户远程登录
第一步修改服务器配置
root@server \~\]# vim /etc/ssh/sshd_config PermitRootLogin no # yes修改为no 同时修改: /etc/ssh/sshd_config.d/01-permitrootlogin.conf 中, PermitRootLogin no
第二步:服务端重启服务
root@server \~\]# systemctl restart sshd 重启ssh服务
第三步:客户端,测试
无法登陆

3.允许特定账户进行ssh登录,其它账户无法登录
服务端添加新账户
root@server \~\]# useradd test 创建新用户 \[root@server \~\]# passwd test 修改密码
服务端修改主配置文件
root@server \~\]# vim /etc/ssh/sshd_config AllowUsers test # 第一行添加
重启服务
root@server \~\]# systemctl restart sshd 重启ssh服务
客户端测试
root@node1 \~\]# ssh test@192.168.48.128 登录test用户

root@node1 \~\]# ssh root@192.168.48.130 # 测试其它账户可否登录 root@192.168.48.130's password: Permission denied, please try again
4.ssh-keygen 免密登录
服务端
ssh-keygen是用于生成、管理、转换密钥的工具
root@server \~\]# ssh-keygen -t rsa • 分析 ◇ -t:指定密钥类型 ◇ rsa:使用rsa公钥加密算法,可以产生公钥和私钥 ◇ 执行后会在对应账户目录中产生一个隐藏目录.ssh,其中有2个文件 ▪ id_rsa:私钥文件 ▪ id_rsa.pub:公钥文件
客户端
定位客户端,制作公私钥对
root@node1 \~\]# ssh-keygen -t rsa # 一路回车
将公钥上传到服务器端
root@node1 \~\]# ssh-copy-id root@192.168.48.130 # 输入服务端的账户及IP地址

注意:客户端将公钥上传到服务器端后,服务器端的/root/.ssh/authorized_keys文件会存储客户端的公钥数据
最后客户端免密测试
root@node1 \~\]# ssh root@192.168.48.130 客户端ssh免密登录
5.xshell使用密钥登陆
服务端
注意:先在服务器端检查/root/.ssh/authorized_keys是否存在,它是存储公钥的文件,若不存在需要新建
服务器端操作
root@server \~\]# cd /root \[root@server \~\]# ls -a \[root@server \~\]# mkdir .ssh \[root@server \~\]# cd .ssh \[root@server .ssh\]# vim authorized_keys 创建authorized_keys文件 # 有时需要注意.ssh目录的权限◇
客户端
打开xshell,新建密钥

设置密钥文件名加密密码(可不设)

产生公钥,并==另存为文件==

将windows中保存的公钥文件以==记事本==的方式打开,复制内容,
拷贝到Linux服务器端的
/root/.ssh/authorized_keys
文件中后保存退出
重启服务端服务
root@server .ssh\]# systemctl restart sshd 重启服务端ssh服务
打开xshell

点击==用户身份验证==,选择==Public Key== 方式验证登录,点击连接


成功
