SSH服务详解
第1章 SSH服务
1.1 SSH服务协议说明
1.1.1 ssh远程连接排错过程
1.2 SSH加密技术说明
1.2.2 ssh实现安全链接建立,利用要是和锁头
1.2.3 ssh加密算法
v1漏洞: 密钥不更换
v2 定期更换密钥
利用Diffie-Hellman机制定期更新密钥
1.3 ssh知识要点:
ssh是安全的加密协议,用于远程链接linux服务器
ssh 默认端口是****22,安全协议版本sshv2,出来2之外还有1(有漏洞)
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务
linux ssh 客户端包括ssh 远程链接命令,以及远程拷贝scp命令等
1.4 SSH服务软件详细说明
1.4.1 什么是ssh服务
1.4.2 ssh软件安装
客户端
服务端软件
1.4.3 openssh-clinets 软件的主要内容:
1.4.4 openssh-server 软件的主要内容
注意:使用sshd采用绝对路径进行启动
1.5 ssh服务配置文件说明:
-
配置文件中所有注释信息,表示默认参数配置
-
配置文件中#空格 后面内容表示说明信息
#参数 表示配置参数信息
- 配置文件参数信息修改后,一旦变为注释,即还原为默认配置
1.5.1 ssh服务的配置文件路径
1.5.2 配置文件中常用配置说明
# This is the sshd server system-wide configuration file. See # sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options change a # default value.
# OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options change a # default value. Port 25113 #端口 ListenAddress 10.0.0.41 #监听地址(本地网卡地址),指定本地网卡那个网卡提供服务 PermitRootLogin no #是否允许root用户登陆 #PermitEmptyPasswords no #禁止空密码登陆 #UseDNS no #不使用DNS GSSAPIAuthentication no #API认证 # 连接慢的解决 #AddressFamily any #指定监听ipv4地址,或是ipv6地址,或者所有都监听
配置文件内容说明:
1.5.3 配置文件语法检查方法
1.5.4 ListenAddress 监听地址的说明
1.5.5 SSH配置文件相关参数详细说明
<td style="width: 352.95pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: none; background: #a6a6a6; padding: 0cm 5.4pt;" width="471">
<p style="text-align: justify; text-justify: inter-ideograph;">
<strong><span style="font-family: '微软雅黑',sans-serif;">参数说明</span></strong>
</p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
<p style="text-align: justify; text-justify: inter-ideograph;">
<span style="font-family: '微软雅黑',sans-serif;">指定</span>sshd<span style="font-family: '微软雅黑',sans-serif;">进程监听的端口号,默认为</span>22.<span style="font-family: '微软雅黑',sans-serif;">可以使用多条指令监听多个端口</span>.
</p>
<p style="text-align: justify; text-justify: inter-ideograph;">
<span style="font-family: '微软雅黑',sans-serif;">默认将在本机的所有网络接□上监听,但是可以通过</span>ListenAddress<span style="font-family: '微软雅黑',sans-serif;">指走只在某个特定的接口上监听</span>.
</p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
<p style="text-align: justify; text-justify: inter-ideograph;">
<span style="font-family: '微软雅黑',sans-serif;">是否允许密码为空的用户远程登录</span>.<span style="font-family: '微软雅黑',sans-serif;">默认为</span>"no"
</p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
<p style="text-align: justify; text-justify: inter-ideograph;">
<span style="font-family: '微软雅黑',sans-serif;">是否允许</span>root<span style="font-family: '微软雅黑',sans-serif;">登录</span>.<span style="font-family: '微软雅黑',sans-serif;">可用值如下:</span>"yes"(<span style="font-family: '微软雅黑',sans-serif;">默认)表示允许</span>."no"<span style="font-family: '微软雅黑',sans-serif;">表示禁止</span>.
</p>
<p style="text-align: justify; text-justify: inter-ideograph;">
"without-password"<span style="font-family: '微软雅黑',sans-serif;">表示禁止使用密码认证登录</span>."forced-commands-only"<span style="font-family: '微软雅黑',sans-serif;">表示只有在指走了</span>command<span style="font-family: '微软雅黑',sans-serif;">选项的情况下才允许使用公钥认证登录</span>.<span style="font-family: '微软雅黑',sans-serif;">同时其它认证方法全部被禁止</span>.<span style="font-family: '微软雅黑',sans-serif;">这个值常用于做远程备份之类的事情</span>.
</p>
<blockquote>
<p>
1.多开一个窗口
</p>
<p>
2.临时多部署一条连接方式
</p>
<p>
3.给普通用户sudo权限
</p>
</blockquote>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
<p style="text-align: justify; text-justify: inter-ideograph;">
<span style="font-family: '微软雅黑',sans-serif;">指定定</span>sshd<span style="font-family: '微软雅黑',sans-serif;">是否应该对远程主机名进行反向解折,以检查此主机名是否与其</span>IP<span style="font-family: '微软雅黑',sans-serif;">地址真实对应</span>.<span style="font-family: '微软雅黑',sans-serif;">默认值为</span>"yes”.
</p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
<p style="text-align: justify; text-justify: inter-ideograph;">
<span style="font-family: '微软雅黑',sans-serif;">指定监听并提供服务相应的网卡地址信息</span>
</p>
</td>
1.5.6 快速修改配置参数
1.6 ssh服务认证类型
1.6.1 基于密码的认证类型
演示了 SecureCR及ssh客户端连接,口令验证的测试。
1.6.2 基于密钥的安全认证方法
1.7 基于秘钥登录配置
1.7.1 环境准备
<td style="width: 78pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: none; background: #bfbfbf; padding: 0cm 5.4pt;" width="104">
<p style="text-align: center;" align="center">
<strong><span style="font-family: '微软雅黑',sans-serif;">主机名</span></strong>
</p>
</td>
<td style="width: 106.3pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: none; background: #bfbfbf; padding: 0cm 5.4pt;" width="142">
<p style="text-align: center;" align="center">
<strong>ip</strong>
</p>
</td>
</tr>
<tr>
<td style="width: 84.8pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top: none; padding: 0cm 5.4pt;" width="113">
<p style="text-align: center;" align="center">
<span style="font-family: '微软雅黑',sans-serif;">管理服务器</span>
</p>
</td>
<td style="width: 78.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="104">
<p style="text-align: center;" align="center">
m01
</p>
</td>
<td style="width: 106.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="142">
<p style="text-align: center;" align="center">
10.0.0.61
</p>
</td>
</tr>
<tr>
<td style="width: 84.8pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top: none; padding: 0cm 5.4pt;" width="113">
<p style="text-align: center;" align="center">
<span style="font-family: '微软雅黑',sans-serif;">备份服务器</span>
</p>
</td>
<td style="width: 78.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="104">
<p style="text-align: center;" align="center">
backup
</p>
</td>
<td style="width: 106.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="142">
<p style="text-align: center;" align="center">
10.0.0.41
</p>
</td>
</tr>
<tr>
<td style="width: 84.8pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top: none; padding: 0cm 5.4pt;" width="113">
<p style="text-align: center;" align="center">
<span style="font-family: '微软雅黑',sans-serif;">存储服务器</span>
</p>
</td>
<td style="width: 78.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="104">
<p style="text-align: center;" align="center">
nfs01
</p>
</td>
<td style="width: 106.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="142">
<p style="text-align: center;" align="center">
10.0.0.31
</p>
</td>
</tr>
1.7.2 第一个里程碑: 在备份服务器上创建密钥对
参数说明:
-t 指定创建密钥对的类型,可以创建的类型如下↓
查看创建出来的密钥对:
1.7.3 第二个里程:将公钥分发给存储服务器
1.7.4 第三个里程碑:进行登录测试
1.8 telnet服务简介
1.8.1 部署telnet服务
第一个里程碑:安装telnet服务软件
第二个里程碑:设置开机自启动
修改xinetd下的配置文件,从而管理telnet服务
第三个里程碑: 启动xinetd 服务,让telnet能够开机自启动
1.8.2 客户端测试
1.8.3 ssh与telnet区别(对比示意图)
01.ssh是加密的服务协议,telnet服务是非加密的
02.ssh服务默认支持root用户登陆,telnet用户默认不支持root用户登陆
1.9 进行免密码scp传输测试
1.9.1 scp的基本语法使用:
推:PUSH
参数说明:
说明:
拉:PULL
说明:
结论:
1.10 使用sftp进行基于密钥的文件传输
1.10.1 sftp简介
1.10.2 sftp命令说明
说明:
-o 连接的时候指定选项
1.10.3 sftp使用参数说明
操作远程服务器
操作本地服务器
上传下载文件参数
查看帮助的方式:
1.11 ssh相关重点知识总结
- ssh协议:sshd-–远程连接(sshd),sftp
- 为加密的远程连接协议,相关软件有openssh.openssh-–https。
- 默认端口22
- 协议版本1X和2.x,2.x更安全。了解SSH协议原理(ssh连接过程X
- 服务端ssh远程连接服务,sftp服务。sshd守护进程,开机要自启动。
- ssh客户端包含ssh,scp,sftp命令。
- ssh安全验证方式:口令和密钥,这两种都是基于口令的,SSH密钥登录的原理。
- ssh服务安全优化,修改默认端口22,禁止root远程连接,禁止dns,SSH只监听内网IP
- ssh密钥对,公钥(publickey)在服务器端,比喻就是锁头,私钥(privatekey)在客户端,比喻就是钥匙。
第2章 重点知识补充
2.1 一个服务始终无法启动
01.服务的查日志/系统日志
02.检查服务端口有没有冲突
2.2 给你一个端口如何命令行查出对应的服务是什么?
测试服务端口有没有开启
2.2.1 根据进程名查看对应的端口是什么?
2.3 ssh入侵案例说明
被入侵实例http://phenixikki.blog.51cto.com/7572938/1546669
IP何防止SSH登录入侵小结:
1、用密钥登录,不用密码登陆
2、牤牛阵法:解决SSH安全问题
a.防火墙封闭SSH,指定源IP限制(局域网、信任公网)
b.开启 SSH 只监听本地内网 IP ( ListenAddress 172.16.1.61 )
3、尽量不给服务器外网ip
4、最小化(软件安装-授权)
5、给系统的重要文件或命令做一个指纹
6、给他锁上 chattr +i +a
第3章 扩展问题
3.1 服务端端口号变化了,如何基于秘钥连接
3.1.1 环境准备
实验环境:
3.1.2 通过另外一台服务器创建并分发密钥
第一个里程碑: 现创建密钥使用 ssh-keygen
第二个里程碑:分发密钥,注意ssh的端口
说明:
通过 man 手册找到密钥分发的命令格式。
-i 参数指定 公钥文件的存放位置
第三个里程碑: 测试密钥登陆
3.2 如何实现自动创建秘钥对,同时分发公钥(编写脚本实现)
脚本内容:
脚本说明:
创建密钥,-f指定存放位置,-P 密钥加密的密码 -q 减少信息输出
这里需要安装一个软件 yum install sshpass -y 用来提供中户密码
这里使用for循环来对ip地址进行变化。
系统负载过高,无法连接ssh怎么办?
可以通过修改 进程优先级的方法来是sshd服务能够更多的使用资源,保证sshd的连接
修改进程优先级的方法:
优先系数由系统内核决定,不可更改
nice值可以手动更改,范围是 -20~19
优先级的值越低,优先级越高;优先级的值越高,优先级越低。
所以想调整成最高优先级的话,就将nice值设为-20;想调整成最低优先级的话,将nice值设为19。
1、任务未运行前进行调整
2、任务已经开始运行的情况下调整
①方法一
② 方法二
查看进程优先级
<li>
<a href="#12_SSH">1.2 SSH加密技术说明</a><ul>
<li>
<a href="#122_ssh">1.2.2 ssh实现安全链接建立,利用要是和锁头</a>
</li>
<li>
<a href="#123_ssh">1.2.3 ssh加密算法</a>
</li>
</ul>
</li>
<li>
<a href="#13_ssh">1.3 ssh知识要点:</a>
</li>
<li>
<a href="#14_SSH">1.4 SSH服务软件详细说明</a><ul>
<li>
<a href="#141_ssh">1.4.1 什么是ssh服务</a>
</li>
<li>
<a href="#142_ssh">1.4.2 ssh软件安装</a>
</li>
<li>
<a href="#143_openssh-clinets">1.4.3 openssh-clinets 软件的主要内容:</a>
</li>
<li>
<a href="#144_openssh-server">1.4.4 openssh-server 软件的主要内容</a>
</li>
</ul>
</li>
<li>
<a href="#15_ssh">1.5 ssh服务配置文件说明:</a><ul>
<li>
<a href="#151_ssh">1.5.1 ssh服务的配置文件路径</a>
</li>
<li>
<a href="#152">1.5.2 配置文件中常用配置说明</a>
</li>
<li>
<a href="#153">1.5.3 配置文件语法检查方法</a>
</li>
<li>
<a href="#154_ListenAddress">1.5.4 ListenAddress 监听地址的说明</a>
</li>
<li>
<a href="#155_SSH">1.5.5 SSH配置文件相关参数详细说明</a>
</li>
<li>
<a href="#156">1.5.6 快速修改配置参数</a>
</li>
</ul>
</li>
<li>
<a href="#16_ssh">1.6 ssh服务认证类型</a><ul>
<li>
<a href="#161">1.6.1 基于密码的认证类型</a>
</li>
<li>
<a href="#162">1.6.2 基于密钥的安全认证方法</a>
</li>
</ul>
</li>
<li>
<a href="#17">1.7 基于秘钥登录配置</a><ul>
<li>
<a href="#171">1.7.1 环境准备</a>
</li>
<li>
<a href="#172">1.7.2 第一个里程碑: 在备份服务器上创建密钥对</a>
</li>
<li>
<a href="#173">1.7.3 第二个里程:将公钥分发给存储服务器</a>
</li>
<li>
<a href="#174">1.7.4 第三个里程碑:进行登录测试</a>
</li>
</ul>
</li>
<li>
<a href="#18_telnet">1.8 telnet服务简介</a><ul>
<li>
<a href="#181_telnet">1.8.1 部署telnet服务</a>
</li>
<li>
<a href="#182">1.8.2 客户端测试</a>
</li>
<li>
<a href="#183_sshtelnet">1.8.3 ssh与telnet区别(对比示意图)</a>
</li>
</ul>
</li>
<li>
<a href="#19_scp">1.9 进行免密码scp传输测试</a><ul>
<li>
<a href="#191_scp">1.9.1 scp的基本语法使用:</a>
</li>
</ul>
</li>
<li>
<a href="#110_sftp">1.10 使用sftp进行基于密钥的文件传输</a><ul>
<li>
<a href="#1101_sftp">1.10.1 sftp简介</a>
</li>
<li>
<a href="#1102_sftp">1.10.2 sftp命令说明</a>
</li>
<li>
<a href="#1103_sftp">1.10.3 sftp使用参数说明</a>
</li>
</ul>
</li>
<li>
<a href="#111_ssh-2">1.11 ssh相关重点知识总结</a>
</li>
</ul>
</li>
<li>
<a href="#2">第2章 重点知识补充</a><ul>
<li>
<a href="#21">2.1 一个服务始终无法启动</a>
</li>
<li>
<a href="#22">2.2 给你一个端口如何命令行查出对应的服务是什么?</a><ul>
<li>
<a href="#221">2.2.1 根据进程名查看对应的端口是什么?</a>
</li>
</ul>
</li>
<li>
<a href="#23_ssh">2.3 ssh入侵案例说明</a>
</li>
</ul>
</li>
<li>
<a href="#3">第3章 扩展问题</a><ul>
<li>
<a href="#31">3.1 服务端端口号变化了,如何基于秘钥连接</a><ul>
<li>
<a href="#311">3.1.1 环境准备</a>
</li>
<li>
<a href="#312">3.1.2 通过另外一台服务器创建并分发密钥</a>
</li>
</ul>
</li>
<li>
<a href="#32">3.2 如何实现自动创建秘钥对,同时分发公钥(编写脚本实现)</a>
</li>
<li>
<a href="#ssh">系统负载过高,无法连接ssh怎么办?</a><ul>
<li>
<a href="#i">修改进程优先级的方法:</a>
</li>
</ul>
</li>
</ul>
</li>
- 原文作者:惨绿少年
- 原文链接:https://clsn.io/clsn/lx900.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。