当前位置:   article > 正文

Linux上SSH实现远程免密登录、SSH配置允许/禁止某些用户远程登录_ssh免密登录

ssh免密登录

目录

一.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远程连接工工具生成公钥文件

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

 点击“下一步”到此页面,保持默认选项即可,再点击“下一步” 

在此定义好名称和密码,点击“下一步” 

在此已经生成公钥文件,可以复制下框内文本,也可以将文本保存为桌面文件,方便下一步使用,点击完成即可

2.正式配置过程

(1)第一种方式

在服务器端存放客户端公钥,查看是否有/root/.ssh/authorized_keys文件,如果没有可以手动创建以该名称命名的文件,将上面保存的客户端公钥文本保存在该文件中。

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

 (2)第二种方式

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

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

然后使用 “ssh-copy-id -i root@服务端IP”将密钥文件拷贝给服务端,并输入一次服务器端密码

[sulibao@sulibao ~]$ ssh-copy-id -i root@192.168.xx.xx

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

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

注意:此时如果想从服务端免密登录客户端,就在服务端重复上述在客户端的操作操作即可,也就是使用ssh-copy-id使得双方互相交换公钥。

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

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

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

Port 22监听端口,默认监听22端口
AddressFamily anyIPV4和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

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

[root@sulibao ~]# systemctl restart sshd

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

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

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

  1. [root@sulibao ~]# useradd user1
  2. [root@sulibao ~]# useradd user2

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

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

[root@sulibao ~]# systemctl restart sshd

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

注意:AllowUsers 选项指定哪些用户可以登录,那么所有非指定用户都不能登录,像上面的情况只指定了user1可以登录,此时连root用户都不能登录,需要谨慎修改!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/842839
推荐阅读
相关标签
  

闽ICP备14008679号