SSH远程登录与控制

目录

一 什么是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 如何确定此台机器就是我要连的机器?

  1. ssh [选项] mcb@192.168.11.9         #指定登录用户、目标主机地址作为参数

  2.  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

在另一台虚拟机验证,使用客户机就需要指定端口号

跳板登录 

提供了一种安全的方式管理和连接位于内部网络中的主机,同时限制了对内部网络的直接访问

#在目标服务端主机上模拟防火墙拒绝客户端连接,客户端使用跳板连接到目标主机上
[root@localhost .ssh]#iptables -A INPUT -s 192.168.11.5-j REJECT 
[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@用户

别的用户无法登录 

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

借鉴他人

[root@localhost ssh]#vim  /etc/ssh/sshd_config
#开启38 行 并改为 no,默认注释并写的yes
38 PermitRootLogin no
#注意虽然阻止了root 但是普通用户可以使用su
[root@localhost1 ~]#ssh zhangsan@192.168.91.100 -p 9527
zhangsan@192.168.91.100's password: 
Last login: Fri Aug 27 16:50:35 2021
[zhangsan@localhost2 ~]$ 
[zhangsan@localhost2 ~]$ su root
密码:
[root@localhost2 zhangsan]#

 
修改 pam认证模块
[root@localhost ssh]#vim /etc/pam.d/su
#开启第6行,默认注释
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


vim /etc/ssh/sshd_config
#找到以下两个配置项:
port  123       #设置特定的ssh服务端口号

②禁止使用  protocol version 1

因为SSH协议版本一存在多个已知的安全漏洞,其使用的加密算法和密钥交换机制相对较弱,易受到中间人攻击等威胁

SSH 协议版本二已经成为现代标准,并且得到广泛支持,绝大多数 SSH 客户端和服务器都默认使用协议版本二,而且很多安全性工具也不再支持协议版本一

③限制可登录用户(白名单)

④设定空闲会话超时时长


vim /etc/ssh/sshd_config           #找到以下两个配置项:

ClientAliveInterval 0

ClientAliveCountMax 3

ClientAliveInterval:表示服务器向客户端发送空闲会话确认消息的时间间隔,单位为秒。默认值为0,表示不发送确认消息。将其设置为一个正整数,表示每隔多长时间向客户端发送一次确认消息。

ClientAliveCountMax:表示服务器向客户端发送确认消息后,客户端没有响应的最大次数。默认值为3,表示如果服务器连续发送3次确认消息后,客户端仍未响应,则认为客户端已经断开连接。将其设置为一个正整数,表示服务器最多发送多少次确认消息后,认为客户端已经断开连接

⑤利用防火墙设置SSH访问策略


#利用防火墙禁止特定IP地址:172.16.12.10访问
iptables -A INPUT -s 172.16.12.10 -j REJECT

⑥仅监听特定的IP地址、公网、内网


vim /etc/ssh/sshd_config           #找到以下三个配置项:

ClientAliveInterval 300

ClientAliveCountMax 2

ListenAddress 192.168.11.10

ClientAliveInterval:表示SSH服务器将向客户端发送空闲会话检查的时间间隔(以秒为单位),默认值为0,表示禁用此功能

ClientAliveCountMax:表示SSH服务器将向客户端发送空闲会话检查的最大次数,如果达到此次数后仍未收到客户端的响应,则会话将被终止,默认值为3

ListenAddress:监听特定的IP地址的SSH连接

⑦基于口令认证时,使用强密码策略

  1. 比如:tr  -cd  [a-zA-Z0-9]  < /dev/random  |  head -c 12 | xargs

  2. #设定12位的随机密码

⑧使用基于密钥的认知

⑨禁止使用空密码

vim /etc/ssh/sshd_config

#找到以下一个配置项:

PermitEmptyPasswords no #禁止使用空密码

⑩禁止root用户直接登录

11 限制ssh的访问频率和并发在线数


vim /etc/ssh/sshd_config           #找到以下一个配置项:

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 中,它会暂时保存解密后的私钥以供后续使用

[root@localhost .ssh]# ssh-agent bash                       #把sh-agent交给进程管理

[root@localhost .ssh]# ssh-add                                  #把密码交给sh-agent  
 
Enter passphrase for /root/.ssh/id_rsa:                      #输入密钥文件密码

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

[root@localhost .ssh]# ssh 192.168.11.6         #无需密码即可登录,重启后失效

Last login: Sun Jan 21 14:06:03 2024 from 192.168.11.9

注:机器重启就会失效

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值