SSH远程登录与控制

打印 上一主题 下一主题

主题 574|帖子 574|积分 1722

目录
一 什么是shh服务器
 ssh优点
作用
 SSH的 软件
公钥首次连接原理
ssh远程登录
二 shh命令 远程连接
直接连接先输入ssh  IP
连接指定用户  
 指定端口号
跳板登录 
此功能马传斌继续研究
三远程登陆执行操纵命令
修改服务端配置文件
​编辑 白名单,只能登录本机的mcb@用户
禁止用户登录 
四 SSH服务的最佳实践
五 openSSH 服务器配置文件
ssh配置文件信息
 存放ssh服务端的配置文件   /etc/ssh/sshd_config
​编辑 六 使用密钥对免交互验证登录
1创建密钥
2传送到远程主
3登录验证
面交互验证


一 什么是ssh服务器

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速率。
SSH客户端<--------------网络---------------->SSH服务端
1 协议范例



  • SSH(Secure Shell):SSH是一种加密网络协议,用于通过安全通道在不安全网络上进行远程访问和管理。它提供了加密的通信会话,包括远程登录和执行命令,以及传输文件等功能
  • Telnet:固然不安全,但仍然被用于远程登录到服务器或设备,通常用于简单的文本交互
  • RDP(Remote Desktop Protocol):主要用于Windows系统,允许用户通过图形界面远程访问另一台计算机。
  • VNC(Virtual Network Computing):允许用户远程控制另一台计算机的图形界面。它是跨平台的远程桌面协议。
  • X11:用于在UNIX和Linux系统上进行图形界面的远程访问。
  • ICA(Independent Computing Architecture):由Citrix Systems开发,用于提供应用步伐和桌面假造化服务
 2 ssh协议优点

数据传输是加密的,可以防止信息泄露
数据传输是压缩的,可以进步传输速率


  • 加密通信:SSH协议通过加密技术,确保通信过程中的数据传输是安全的,防止数据被窃听或窜改
  • 远程登录:用户可以使用SSH协议远程登录到其他计算机或服务器,以便进行命令行操纵、文件管理等任务
  • 加密身份验证:SSH协议支持使用公钥和私钥对进行身份验证,这种方式比传统的基于密码的身份验证更加安全
  • 端口转发:SSH协议支持端口转发,可以通过安全的通道在两个计算机之间建立安全的连接
  • 远程执行命令:SSH允许用户在远程主机上执行命令,这对于自动化脚本和远程管理非常有用
  • 文件传输:SSH协议还支持安全的文件传输,可以在客户端和服务器之间进行安全的文件传输和管理
作用
sshd 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)
3 SSH的 软件

SSH 客户端: xshell     putty      secureCRT      MobaXterm    finalshell 
SSH 服务端:openSSH (Centos 7 默认安装)
4 有关系的步伐



  • OpenSSH:OpenSSH 是 SSH 协议的免费开源实现,包括服务器端和客户端步伐。它支持加密和身份验证功能,被广泛用于Linux和类Unix系统上
  • PuTTY:PuTTY 是一个流行的免费的SSH和Telnet客户端步伐,可在Windows平台上使用。它提供了SSH连接所需的工具和功能
  • WinSCP:WinSCP 是一个免费的SFTP、SCP和FTP客户端步伐,用于在Windows平台上与远程计算机进行安全文件传输。它支持SSH协议,提供了用户友爱的界面
  • SecureCRT:SecureCRT 是一个商业化的SSH客户端步伐,提供了强大的功能和定制选项,适用于Windows、Mac和Linux操纵系统
5 公钥传输原理

①客户端发起连接请求
②服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
③客户端生成密钥对
④客户端用自己的公钥或会话ID,计算出一个值Res,并用服务端的公钥加密
⑤客户端发送加密后的值到服务端,服务端用密钥解密,得到Res
⑥服务端用解密后的Res大概是会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
⑦终极:双方各持有三个密钥,分别为自己的一对公钥、私钥、以及对方的公钥,之后的全部的通讯都会被加密。
6 加密通讯原理


详细阐释:
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保存私钥,假如要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
7 ssh远程登录文件

每次使用sshd登录到其他主机,双方都会生成一个文件known_hosts把对方主机的公钥在.ssh/known_hosts文件里。
8 如何确定此台机器就是我要连的机器?


  • ssh [选项] mcb@192.168.11.9         #指定登任命户、目标主机地点作为参数
  •  ssh -p 20 mcb@192.168.11.9         #-p为指定端口
二 ssh命令 远程连接

①直接连接:先输入ssh  IP


第一次连接服务端机器会询问是否要验证公钥,同意就会自动获取服务端公钥 

验证是否连接精确服务机,可查看服务端的公钥 

②连接指定用户

① ssh  用户名@IP地点
②ssh  -l 用户名  IP地点

 ③指定端口号

在  /etc/ssh/sshd_config文件修改端口号 
sshd服务的默认端口号是 22,假如不是此端口,需要 -p 来指定端口
[root@localhost ~]#vim /etc/ssh/sshd_config

 [root@localhost ~]#systemctl restart sshd
在另一台假造机验证,使用客户机就需要指定端口号

跳板登录 

提供了一种安全的方式管理和连接位于内部网络中的主机,同时限定了对内部网络的直接访问
  1. #在目标服务端主机上模拟防火墙拒绝客户端连接,客户端使用跳板连接到目标主机上
  2. [root@localhost .ssh]#iptables -A INPUT -s 192.168.11.5-j REJECT
  3. [root@localhost ~]#ssh -t 192.168.11.9 ssh 192.168.11.5
复制代码
此功能马传斌继续研究


三  远程登录直接执行操纵命令

#ssh  192.168.11.9  ifconfig
白名单:默认拒绝全部,只有白名单上允许的人才可以访问
黑名单:默认允许全部,只有黑名单上的用户让你不允许访问
留意     实验关闭防火墙  防护 黑白不能同时启用
修改服务端配置文件

root@localhost ~]#vim /etc/ssh/sshd_config

① 白名单,只能登录本机的mcb@用户




别的用户无法登录 

③禁止用户登录 ,此实验要反复去做

  1. 借鉴他人
  2. [root@localhost ssh]#vim  /etc/ssh/sshd_config
  3. #开启38 行 并改为 no,默认注释并写的yes
  4. 38 PermitRootLogin no
  5. #注意虽然阻止了root 但是普通用户可以使用su
  6. [root@localhost1 ~]#ssh zhangsan@192.168.91.100 -p 9527
  7. zhangsan@192.168.91.100's password:
  8. Last login: Fri Aug 27 16:50:35 2021
  9. [zhangsan@localhost2 ~]$
  10. [zhangsan@localhost2 ~]$ su root
  11. 密码:
  12. [root@localhost2 zhangsan]#
  13. 修改 pam认证模块
  14. [root@localhost ssh]#vim /etc/pam.d/su
  15. #开启第6行,默认注释
  16. 6 auth            required        pam_wheel.so use_uid
复制代码
#  vim /etc/ssh/sshd_config
 38 #PermitRootLogin yes    把yes该为no
Xshell就登陆不上
修改pam认证模块,只允许wheel组用户可以使用    su

[root@localhost ~]# vim /etc/pam.d/su
 6 #auth           required        pam_wheel.so use_uid
默认是解释掉,要让6行开启
操纵如下:
[root@localhost ~]# vim /etc/pam.d/su

太遗憾了,过程忘了
四 SSH服务的最佳实践

①建议使用非默认端口22
  1. vim /etc/ssh/sshd_config
  2. #找到以下两个配置项:
  3. port  123       #设置特定的ssh服务端口号
复制代码
②禁止使用  protocol version 1
因为SSH协议版本一存在多个已知的安全漏洞,其使用的加密算法和密钥交换机制相对较弱,易受到中心人攻击等威胁
SSH 协议版本二已经成为现代标准,并且得到广泛支持,绝大多数 SSH 客户端和服务器都默认使用协议版本二,而且许多安全性工具也不再支持协议版本一
③限定可登任命户(白名单)
④设定空闲会话超时时长
  1. vim /etc/ssh/sshd_config           #找到以下两个配置项:
  2. ClientAliveInterval 0
  3. ClientAliveCountMax 3
复制代码
ClientAliveInterval:表现服务器向客户端发送空闲会话确认消息的时间隔断,单位为秒。默认值为0,表现不发送确认消息。将其设置为一个正整数,表现每隔多长时间向客户端发送一次确认消息。
ClientAliveCountMax:表现服务器向客户端发送确认消息后,客户端没有相应的最大次数。默认值为3,表现假如服务器连续发送3次确认消息后,客户端仍未相应,则以为客户端已经断开连接。将其设置为一个正整数,表现服务器最多发送多少次确认消息后,以为客户端已经断开连接
⑤利用防火墙设置SSH访问策略
  1. #利用防火墙禁止特定IP地址:172.16.12.10访问
  2. iptables -A INPUT -s 172.16.12.10 -j REJECT
复制代码
⑥仅监听特定的IP地点、公网、内网
  1. vim /etc/ssh/sshd_config           #找到以下三个配置项:
  2. ClientAliveInterval 300
  3. ClientAliveCountMax 2
  4. ListenAddress 192.168.11.10
复制代码
ClientAliveInterval:表现SSH服务器将向客户端发送空闲会话查抄的时间隔断(以秒为单位),默认值为0,表现禁用此功能
ClientAliveCountMax:表现SSH服务器将向客户端发送空闲会话查抄的最大次数,假如达到此次数后仍未收到客户端的相应,则会话将被终止,默认值为3
ListenAddress:监听特定的IP地点的SSH连接
⑦基于口令认证时,使用强密码策略

  • 比如:tr  -cd  [a-zA-Z0-9]  < /dev/random  |  head -c 12 | xargs
  • #设定12位的随机密码
⑧使用基于密钥的认知
⑨禁止使用空密码
  1. vim /etc/ssh/sshd_config
  2. #找到以下一个配置项:
  3. PermitEmptyPasswords no #禁止使用空密码
复制代码
⑩禁止root用户直接登录
11 限定ssh的访问频率和并发在线数
  1. vim /etc/ssh/sshd_config           #找到以下一个配置项:
  2. MaxStartups 10                   #最多允许10个并发连接,如果超过这个数量,会拒绝新的连接
复制代码
使用PAM模块:通过Pluggable Authentication Modules (PAM) 可以实现更复杂的控制,
例如限定用户的并发登录数 
使用防火墙:你也可以使用防火墙软件如iptables来限定从特定IP地点发起的并发SSH连接数
12 经常分析日记分离
独立sshd服务日记文件:默认sshd服务日记在/var/log/secure下,可通过rsyslog步伐将sshd服务日记文件独立出来放到特定的文件夹中,方便查看和管理。
(具体操纵请查看《Linux文件系统与日记分析》博客)
使用日记分析工具:可以使用工具如grep、awk、sed等来分析SSH日记文件。这些工具可以资助搜刮特定的关键字、过滤信息、提取有用的数据等
设置日记轮转:为了避免日记文件过大,可以配置日记轮转。通过日记轮转,旧的日记文件会被重定名并压缩,同时创建新的日记文件。可以使用logrotate工具来实现日记轮转,并在其配置文件中指定SSH日记文件的处理方式(具体操纵请查看《Linux文件系统与日记分析》博客) 
五 openSSH 服务器配置文件

openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操纵系统
执行“systemctl start sshd”命令即可启动sshd服务,默认端口使用的22端口
服务名称:sshd

服务端主步伐:/usr/sbin/sshd  
服务端配置文件:/etc/ssh/sshd_config 
客户端配置文件:/etc/ssh/ssh_config
1 ssh配置文件信息

在linux中实现ssh,是通过opsnSSH的sshd服务提供的

 2 存放ssh服务端的配置文件   /etc/ssh/sshd_config

[root@localhost ~]#vim /etc/ssh/sshd_config
 六  密钥对免交互     验证登录


   有密码又无需输入密码
1 创建密钥,生成rsa算法密钥


2 传送到远程主机


3 登录验证


七 免交互登录

客户端先输入 ssh-agent  bash 将这个命令交给 bash 去管理
再输入 ssh-add  是将用户的私钥添加到运行中的 ssh-agent 中,如许在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用
  1. [root@localhost .ssh]# ssh-agent bash                       #把sh-agent交给进程管理
  2. [root@localhost .ssh]# ssh-add                                  #把密码交给sh-agent  
  3.  
  4. Enter passphrase for /root/.ssh/id_rsa:                      #输入密钥文件密码
  5. Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
  6. [root@localhost .ssh]# ssh 192.168.11.6         #无需密码即可登录,重启后失效
  7. Last login: Sun Jan 21 14:06:03 2024 from 192.168.11.9
  8. 注:机器重启就会失效
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表