欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

在Linux系统上检查所安装的SSH的版本的方法

程序员文章站 2023-11-07 18:25:16
这篇文章主要介绍了在Linux系统上检查所安装的SSH的版本的方法,SSH是最常用的跨平台多系统文件传输工具,需要的朋友可以参考下... 15-06-14...

安全shell(ssh)通过加密的安全通信通道来远程登录或者远程执行命令。ssh被设计来替代不安全的明文协议,如telnet、rsh和rlogin。ssh提供了大量需要的特性,如认证、加密、数据完整性、授权和转发/通道。
ssh1 vs. ssh2

ssh协议规范存在一些小版本的差异,但是有两个主要的大版本:ssh1 (版本号 1.xx) 和 ssh2 (版本号 2.00)。

事实上,ssh1和ssh2是两个完全不同互不兼容的协议。ssh2明显地提升了ssh1中的很多方面。首先,ssh是宏设计,几个不同的功能(如:认证、传输、连接)被打包进一个单一的协议,ssh2带来了比ssh1更强大的安全特性,如基于mac的完整性检查,灵活的会话密钥更新、充分协商的加密算法、公钥证书等等。

ssh2由ietf标准化,且它的实现在业界被广泛部署和接受。由于ssh2对于ssh1的流行和加密优势,许多产品对ssh1放弃了支持。在写这篇文章的时候,openssh仍旧支持ssh1和ssh2,然而在所有的现代linux发行版中,openssh服务器默认禁用了ssh1。
检查支持的ssh协议版本
方法一

如果你想检查本地openssh服务器支持的ssh协议版本,你可以参考/etc/ssh/sshd_config这个文件。用文本编辑器打开/etc/ssh/sshd_config,并且查看"protocol"字段。

如果如下显示,就代表服务器只支持ssh2。


复制代码
代码如下:
protocol 2

如果如下显示,就代表服务器同时支持ssh1和ssh2。


复制代码
代码如下:
protocol 1,2

方法二

如果因为openssh服务其运行在远端服务器上而你不能访问/etc/ssh/sshd_config。你可以使用叫ssh的ssh客户端来检查支持的协议。具体说来,就是强制ssh使用特定的ssh协议,接着我么查看ssh服务器的响应。

下面的命令强制ssh使用ssh1:


复制代码
代码如下:
$ ssh -1 user@remote_server

下面的命令强制ssh使用ssh2:


复制代码
代码如下:
$ ssh -2 user@remote_server

如果远程ssh服务器只支持ssh2,那么第一个带“-1”的选项就会出现像下面的错误信息:


复制代码
代码如下:
protocol major versions differ: 1 vs. 2

如果ssh服务器同时支持ssh1和ssh2,那么两个命令都有效。
方法三

另一个检查版本的方法是运行ssh扫描工具,叫做scanssh。这个命令行工具在你想要检查一组ip地址或者整个本地网络来升级ssh1兼容的ssh服务器时很有用。

下面是基本的ssh版本扫描语法。


复制代码
代码如下:
$ sudo scanssh -s ssh -n [ports] [ip addresses or cidr prefix]

"-n"选项可以指定扫描的ssh端口。你可以用都好分隔来扫描多个端口,不带这个选项,scanssh会默认扫描22端口。

使用下面的命令来发现192.168.1.0/24本地网络中的ssh服务器,并检查ssh协议v版本:


复制代码
代码如下:
$ sudo scan -s ssh 192.168.1.0/24

如果scanssh为特定ip地址报告“ssh-1.xx-xxxx”,这暗示着相关的ssh服务器支持的最低版本是ssh1.如果远程服务器只支持ssh2,scanssh会显示“ssh-2.0-xxxx”。