Debian10配置SSH服务

一,简介

SSH (Secure Shell)安全外壳协议,专门为远程登录会话和其他网络服务提供安全的一种安全协议,就比如我们常见的Telnet协议和ftp协议,它们都是使用明文传输的,数据很容易遭到监听,也很容易受到中间人攻击,而ssh是一项创建在应用层和传输层的一种安全协议,在进行数据传输时,可以对传输的数据包进行加密处理。

工作流程:

(1) 版本号协商阶段,SSH目前包括 SSH1和SSH2两个版本, 双方通过版本协商确定使用的版本
(2) 密钥和算法协商阶段,SSH支持多种加密算法, 双方根据本端和对端支持的算法,协商出最终使用的算法
(3) 认证阶段,SSH客户端向服务器端发起认证请求, 服务器端对客户端进行认证
(4) 会话请求阶段, 认证通过后,客户端向服务器端发送会话请求
(5) 交互会话阶段 ,会话请求通过后,服务器端和客户端进行信息的交互

安全验证方式:

(1)基于口令的安全验证:经过账户和密码即可登录到目标主机
(2)基于密钥的安全验证:要先在本地生成“密钥对”后将公钥传送到服务端,进行一个匹配

安装:apt-get install ssh

默认端口:22

服务端主配置文件:/etc/ssh/sshd.conf

客服端主配置文件: /etc/ssh/ssh.conf

查看是否安装:server --status-all | grep ssh

所有配置文件解析放在最后

二,使用口令验证连接Xshell7

vim /etc/ssh/sshd.conf

端口改为2021

 

打开允许root用户登录

启用密码验证(如果启用了密钥验证,则需关闭此项)

改完记得重启ssh服务哦!!!

systemctl enable sshd.conf                                //开机自启ssh服务

systemctl stop sshd.conf                                //停止ssh服务

systemctl restart sshd.conf                              //重启ssh服务

systemctl status sshd.conf                                //查看ssh服务状态

 

 

输入密码之后就能登录上去了

 三,密钥安全认证的使用

1.安装SSH,工作端口监听在19210

这里看了下我的进程里多了个6010,是因为我们使用了Xshell连接而导致的。

 把这条注释掉就好了,记得修改过配置文件后一点要重启服务!!!

我们退出Xshell后就没有6010这条进程了

2.经允许192.168.31.219这个网络进行ssh访问,其余所有的主机的请求都应该拒绝

通过修改/etc/hosts.allow和/etc/hosts.deny两个配置文件远程限制某个IP和某段IP地址允许或拒绝访问Linux SSH、FTP、telnet等服务,其中/etc/hosts.allow表示允许访问的IP,/etc/hosts.deny表示拒绝访问的IP,要记住hosts.deny这个文件的优先级高于hosts.allow。

在文件最下方添加这两条即可。

那我们来试试使用192.168.31.251这个ip能否进行访问, 是在同一网段的机器。

3.只允许用户user01用户使用秘钥免密码登录,其他用户拒绝登录(包括root用户)

useradd -m user01                //创建一个user01用户及其用户家目录

 vim /etc/ssh/sshd.conf

将 PasswordAuthentication yes和PermitRootLogin yes 注释点

 将这两条的注释取消掉

增加这一条

使用

 两台机器都使用ssh-keygen -t rsa 生成密钥,都直接回车就行

使用ssh [email protected] -p 19210进行连接

四.配置文件解析

/etc/ssh/sshd_config

#  常用
Port 22			#  端口号
AddressFamily any	#  指定使用哪种地址协议(默认:any、仅IPv4:IPv4、仅IPv6:IPv6)
ListenAddress 0.0.0.0	#  监听地址(0.0.0.0 表示所有地址)
ListenAddress ::		#  监听地址(IPv6 地址)
Protocol 2		#  指定 SSH 的协议版本,1 或 2(如需同时支持两者,只需使用逗号分隔,如:1,2)
LogLevel INFO		#  日志等级(QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3)
UserDNS no		#  禁止DNS反向解析

#  用户相关
PermitRootLogin no		#  禁止root用户登录
PermitEmptyPasswords no 	#  禁止空密码用户登录
LoginGraceTime 2m	#  登录验证时间为2分钟
MaxAuthTries 6 		#  最大重试次数6次
AllowUsers steven	#  只允许 steven 用户登录
DenyUsers steven	#  不允许登录用户 steven


#  验证
PasswordAuthentication yes	#  启用密码验证(如配置密钥登录,则需关闭此项)
PubkeyAuthentication yes		#  启用密匙验证
RSAAuthentication yes		#  使用 RSA 算法进行安全验证
AuthorizedKeysFile      .ssh/authorized_keys		#  指定公钥数据库文件(用于密钥登陆)

/etc/ssh/ssh_config

Host *			#  有效的主机(多个主机可用空格隔, “*” 表示所有)
ForwardAgent no	#  连接是否经过代理验证(如果是)转发给远程计算机
ForwardX11 no	#  连接受否被自动重定向到安全的通道和显示集
RhostsRSAAuthentication no	#  不使用 RSA 算法基于 rhosts 的安全验证(仅 Version 1 版本使用)
RSAAuthentication yes		#  使用 RSA 算法进行安全验证
PasswordAuthentication yes	#  使用口令验证
HostbasedAuthentication no	#  与 RhostsRSAAuthentication 类似(Version2 使用)。
GSSAPIAuthentication no		#  是否允许使用基于 GSSAPI 的用户认证(默认值为 ”yes”,仅用于 Version2)
BatchMode no			#  如为 “yes“,passphrase/password(交互式输入口令)的提示将被禁止
CheckHostIP yes			#  设置 SSH 是否检查看连接到服务器的主机的 IP 地址以防止 DNS 欺骗(建议设置为 “yes“)
AddressFamily any		#  指定使用哪种地址协议(默认:any、仅IPv4:IPv4、仅IPv6:IPv6)
ConnectTimeout 0		#  设置连接超时时间
StrictHostKeyChecking ask       #  如果设置为 ”yes“,则不会自动把计算机的密钥加入 ”HOME/.ssh/known_hosts" 文件,并且以一旦计算机的密钥发生了变化,就拒绝连接
IdentityFile ~/.ssh/identity	#  设置从哪个文件读取用户的 RSA 安全验证标识
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_ecdsa
IdentityFile ~/.ssh/id_ed25519
Port 22			#  设置端口号
Protocol 2		#  指定 SSH 的协议版本,1 或 2(如需同时支持两者,只需使用逗号分隔,如:1,2)
Cipher 3des		#  设置加密用的密码
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc	#  指定 Version2 使用的加密算法(多个算法之间使用逗号分隔)
MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160	#  制定允许在 Version2 中使用哪些消息摘要算法来进行数据校验

/etc/hosts.allow

    /etc/hosts.allow
sshd:10.1.82.18         //允许10.1.82.18这个网络能访问ssh服务
#sshd:10.1.82.*            //允许10.1.82.*这个网段能访问ssh服务
#in.telnetd:10.1.82.18    //允许10.1.82.18这个ip能通过Telnet服务访问
#in.Telnetd:10.1.82.*    //允许10.1.82.*这个网段能通过Telnet服务访问
#all:10.1.82.18           //允许这个ip地址能通过任何服务器远程登录到linux服务器
#all:10.1.82.*            //类似

/etc/hosts.dent

		/etc/hosts.deny
sshd:all	禁止所有ip不能通过ssh登录linux服务器
#in.telnet:all		//禁止所有ip不能通过telnet登录linux服务器
#all:all			//禁止所有ip不能通过任何服务登录linux服务器

 其实还有好多可以写的,但孩子我实在卷不动了实在是想睡觉了,就这样吧。

猜你喜欢

转载自blog.csdn.net/qq_45014174/article/details/121448687