简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录

本文基于Linux上CentOS 7版本配合Xshell 7进行演示

一.SSH简介

1.介绍

2.工作流程

二.具体配置免密步骤

1.配置前准备工作

2.正式配置过程

三.在服务器端配置SSH远程黑白名单

1.配置文件/etc/ssh/sshd_config部分参数解析

2.配置远程登录黑白名单


一.SSH简介

1.介绍

SSH用于计算机之间的加密登录,是一类网络协议,使用SSH协议远程登录另一台计算机,这种登录是相对安全的,即使被中途截获,密码不会泄露。

2.工作流程

(1)建立连接:SSH服务器在指定的端口监听客户端的连接请求,在客户端向服务器发起连接请求后,建立一个TCP连接。

(2)协商版本:某些版本可以支持更多的认证方法和密钥交换方法,SSH服务器和客户端通过协商确定最终使用的SSH版本号。

(3)算法协商:双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法,用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法。

(4)交换密钥:服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和绘画ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。

(5)用户认证:密码(password)认证、密钥(publickey)认证、password-publickey认证(同时满足)、all认证(选择其一)

(6)会话请求和交互:认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供服务,建立好会话后,SSH服务器端和客户端在该会话上进行数据信息交互。

二.具体配置免密步骤

1.配置前准备工作

(1)准备两台Linux虚拟机,一台作为服务端,一台作为用户端

注意:两台虚拟机均需要关闭selinux、防火墙(可参考专栏相关文章)

(2)使用Xshell远程连接工工具生成公钥文件

点击“新建用户密钥生成向导”

简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第1张图片 点击“下一步”到此页面,保持默认选项即可,再点击“下一步” 简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第2张图片

在此定义好名称和密码,点击“下一步” 简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第3张图片

在此已经生成公钥文件,可以复制下框内文本,也可以将文本保存为桌面文件,方便下一步使用,点击完成即可简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第4张图片

 (3)开始在服务器端存放客户端公钥,查看是否有/root/.ssh/authorized_keys文件,如果没有可以手动创建。

[root@sulibao ~]# cd /root/.ssh/
[root@sulibao .ssh]# ll
total 8
-rw-r--r-- 1 root root 381 Jan  4 10:30 authorized_keys

2.正式配置过程

(1)在服务器端编辑/root/.ssh/authorized_keys,将上面保存的客户端公钥文本保存在文件中

简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第5张图片

 (2)在客户端,使用“ssh-keygen -t rsa -b 2048”命令生成密钥文件

[sulibao@sulibao ~]$ ssh-keygen -t rsa -b 2048
//-t指定加密算法,-b指定位数

简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第6张图片(3)在客户端使用 “ssh-copy-id -i root@服务端IP”将密钥文件拷贝给服务端,并输入一次服务器端密码

[sulibao@sulibao ~]$ ssh-copy-id -i [email protected]

 简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第7张图片

(4)测试是否能够免密登录,“ssh 用户名@目标IP” 

[sulibao@sulibao ~]$ ssh [email protected]
Last login: Fri Jan  6 11:42:27 2023 from 192.168.xx.xx
[root@sulibao ~]# 

注意:此时如果想从服务端免密登录客户端,就在服务端重复上述在客户端的操作操作即可

简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第8张图片

三.在服务器端配置SSH远程黑白名单

主要是对“/etc/ssh/sshd_config”配置文件进行修改

1.配置文件/etc/ssh/sshd_config部分参数解析

Port 22 监听端口,默认监听22端口
AddressFamily any IPV4和IPV6协议家族用哪个,any表示二者均有
ListenAddress 0.0.0.0 指明监控的地址,0.0.0.0表示本机的所有地址
ListenAddress :: 指明监听的IPV6的所有地址格式
Protocol 2 使用SSH第二版本
HostKey for protocol version 1 一版的SSH支持以下一种秘钥形式
HostKeys for protocol version 2

使用第二版本发送秘钥,支持以下四种秘钥认证的存放位置

HostKey /etc/ssh/ssh_host_rsa_key       # rsa私钥认证 
HostKey /etc/ssh/ssh_host_dsa_key      # dsa私钥认证
HostKey /etc/ssh/ssh_host_ecdsa_key     # ecdsa私钥认证
HostKey /etc/ssh/ssh_host_ed25519_key   # ed25519私钥认证

ServerKeyBits 1024 主机秘钥长度
LoginGraceTime 2m 登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
PermitRootLogin yes 是否允许管理员远程登录,'yes'表示允许,‘no’表示禁止
StrictModes yes 是否让sshd去检查用户主目录或相关文件的权限数据
MaxAuthTries 6    最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
MaxSessions 10   允许的最大会话数
AuthorizedKeysFile .ssh/authorized_keys 选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面
PasswordAuthentication yes 是否允许支持基于口令的认证
ChallengeResponseAuthentication no   是否允许使用键盘输入身份验证,也就是xshell的第三个登录方式
UseDNS yes 是否反解DNS,如果想让客户端连接服务器端快一些,可以改为no
ubsystem sftp /usr/libexec/openssh/sftp-server 支持 SFTP ,如果注释掉,则不支持sftp连接
AllowUsers user1 user2   登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

2.配置远程登录黑白名单

(1)禁止root用户远程登录,将PermitRootLogin yes改为PermitRootLogin no

简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第9张图片

 需要重启sshd服务该配置文件才生效

[root@sulibao ~]# systemctl restart sshd

此时再使用Xshell以root用户身份则无法登录

简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第10张图片

(2)禁止/允许某些用户登录 

新建两个用户user1和user2来测试

[root@sulibao ~]# useradd user1 
[root@sulibao ~]# useradd user2

编辑配置文件“/etc/ssh/sshd_config ”,在文末添加内容后重启

[root@sulibao ~]# vim /etc/ssh/sshd_config 

[root@sulibao ~]# systemctl restart sshd

进行测试,user1可以登录而user2不行

简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第11张图片

简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录_第12张图片注意:AllowUsers 选项指定哪些用户可以登录,那么所有非指定用户都不能登录,像上面的情况只指定了user1可以登录,此时连root用户都不能登录,需要谨慎修改!

你可能感兴趣的:(#,服务搭建,Linux,linux,ssh,运维,centos)