ssh协议

SSH(Secure Shell)协议用于加密网络通信,防止中间人攻击和DNS欺骗。它包括传输层、用户认证和连接协议三个主要部分。SSH工作流程包括版本协商、密钥和算法协商、认证、会话请求及交互会话阶段。SSH运行过程中,主机间通过主机密钥机制进行身份验证。此外,可通过修改SSH监听端口和限制协议版本提高安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ssh协议
ssh是用来干什么的
SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。ssh协议的默认端口是22

SSH 基本框架

SSH协议框架中最主要的部分是三个协议:
 
传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性 等的支持;
用户认证协议(The User Authentication Protocol 则为服务器提供客户端的身份鉴别;
连接协议(The Connection Protocol 将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用; 各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架通过连接协议使用SSH的安全机制。

SSH 的工作过程 
在整个通讯过程中,为实现 SSH的安全连接,服务器端与客户端要经历如下五个阶段:
    * 版本号协商阶段,SSH目前包括 SSH1SSH2两个版本, 双方通过版本协商确定使用的版本
    * 密钥和算法协商阶段,SSH支持多种加密算法, 双方根据本端和对端支持的算法,协商出最终使用的算法
    * 认证阶段,SSH客户端向服务器端发起认证请求, 服务器端对客户端进行认证
    * 会话请求阶段, 认证通过后,客户端向服务器端发送会话请求
    * 交互会话阶段 ,会话请求通过后,服务器端和客户端进行信息的交互

SSH的运行过程
 Client端向Server端发起SSH连接请求。
        * Server端向Client端发起版本协商。
        * 协商结束后Server端发送Host Key公钥 Server Key公钥,随机数等信息。到这里所有通信是不加密的。
        * Client端返回确认信息,同时附带用公钥加密过的一个随机数,用于双方计算Session Key
        * 进入认证阶段。从此以后所有通信均加密。
        * 认证成功后,进入交互阶段。
主机密钥机制
 
对于SSH这样以提供安全通讯为目标的协议,其中必不可少的就是一套完备的密钥机制。由于SSH协议是面向互联网网络中主机之间的互访与信息交换,所以主机密钥成为基本的密钥机制。也就是说,SSH协议要求每一个使用本协议的主机都必须至少有一个自己的主机密钥对,服务方通过对客户方主机密钥的认证之后,才能允许其连接请求。一个主机可以使用多个密钥,针对不同的密钥算法而拥有不同的密钥,但是至少有一种是必备的,即通过 DSS算法产生的密钥
每一个主机都必须有自己的主机密钥,密钥可以有多对,每一对主机密钥对包括公开密钥和私有密钥。
在第一种方案中,主机将自己的公用密钥分发给相关的客户机,客户机在访问主机时则使用该主机的公开密钥来加密数据,主机则使用自己的私有密钥来解密数据,从而实现主机密钥认证,确定客户机的可靠身份。
在第二种方案中,存在一个密钥认证中心,所有系统中提供服务的主机都将自己的公开密钥提交给认证中心,而任何作为客户机的主机则只要保存一份认证中心的公开密钥就可以了。在这种模式下,客户机在访问服务器主机之前,还必须向密钥认证中心请求认证,认证之后才能够正确地连接到目的主机上。
SSH命令
查看客户端版本:ssh -V 
连接到远程主机:ssh name@remoteserver 或者ssh remoteserver -l name(name为主机名)
连接到远程主机指定的端口:ssh name@remoteserver -p 2222 或者ssh remoteserver -l name -p 2222
说明:p 参数指定端口号,通常在路由里做端口映射时,我们不会把22端口直接映射出去,而是转换成其他端口号,这时就需要使 用-p端口号命令格式。
通过SSH运行远程shell命令:
命令格式:
ssh -l name remoteserver ‘command’
说明:连接到远程主机,并执行远程主机的command命令。例如:查看远程主机的内存使用情况。
$ ssh -l root 192.168.1.100 svmon -G

修改SSH监听端口:
默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口。打开/etc/ssh/sshd_config文件并查找下面这样的行:
Port 22
去掉该行前面的# 号,然后修改端口号并重新启动SSH服务:
$ /etc/init.d/ssh restart
仅允许SSH协议版本2:
有两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。编辑/etc/ssh/sshd_config文件并查找下面这样的行:
# Protocol 2,1
修改为
Protocol 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值