赞
踩
目录
1.配置文件/etc/ssh/sshd_config部分参数解析
SSH用于计算机之间的加密登录,是一类网络协议,使用SSH协议远程登录另一台计算机,这种登录是相对安全的,即使被中途截获,密码不会泄露。
(1)建立连接:SSH服务器在指定的端口监听客户端的连接请求,在客户端向服务器发起连接请求后,建立一个TCP连接。
(2)协商版本:某些版本可以支持更多的认证方法和密钥交换方法,SSH服务器和客户端通过协商确定最终使用的SSH版本号。
(3)算法协商:双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法,用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法。
(4)交换密钥:服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和绘画ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。
(5)用户认证:密码(password)认证、密钥(publickey)认证、password-publickey认证(同时满足)、all认证(选择其一)
(6)会话请求和交互:认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供服务,建立好会话后,SSH服务器端和客户端在该会话上进行数据信息交互。
(1)准备两台Linux虚拟机,一台作为服务端,一台作为用户端
注意:两台虚拟机均需要关闭selinux、防火墙(可参考专栏相关文章)
(2)使用Xshell远程连接工工具生成公钥文件
点击“新建用户密钥生成向导”
点击“下一步”到此页面,保持默认选项即可,再点击“下一步”
在此定义好名称和密码,点击“下一步”
在此已经生成公钥文件,可以复制下框内文本,也可以将文本保存为桌面文件,方便下一步使用,点击完成即可
(1)第一种方式
在服务器端存放客户端公钥,查看是否有/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)第二种方式
在客户端,使用“ssh-keygen -t rsa -b 2048”命令生成密钥文件
- [sulibao@sulibao ~]$ ssh-keygen -t rsa -b 2048
- //-t指定加密算法,-b指定位数
然后使用 “ssh-copy-id -i root@服务端IP”将密钥文件拷贝给服务端,并输入一次服务器端密码
[sulibao@sulibao ~]$ ssh-copy-id -i root@192.168.xx.xx
(3)测试是否能够免密登录,“ssh 用户名@目标IP”
- [sulibao@sulibao ~]$ ssh root@192.168.xx.xx
- Last login: Fri Jan 6 11:42:27 2023 from 192.168.xx.xx
- [root@sulibao ~]#
注意:此时如果想从服务端免密登录客户端,就在服务端重复上述在客户端的操作操作即可,也就是使用ssh-copy-id使得双方互相交换公钥。
主要是对“/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私钥认证 |
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 | 登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录 |
(1)禁止root用户远程登录,将PermitRootLogin yes改为PermitRootLogin no
需要重启sshd服务该配置文件才生效
[root@sulibao ~]# systemctl restart sshd
此时再使用Xshell以root用户身份则无法登录
(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不行
注意:AllowUsers 选项指定哪些用户可以登录,那么所有非指定用户都不能登录,像上面的情况只指定了user1可以登录,此时连root用户都不能登录,需要谨慎修改!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。