如何在Linux上检查SSH的版本

我想到SSH存在1和2两个版本(SSH1和SSH2)。这两者之间有什么不同?还有我该怎么在Linux上检查SSH协议的版本?

安全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。

方法一

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

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

Protocol 2

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

Protocol 1

方法二

如果因为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”。
via: http://ask.xmodulo.com/check-ssh-protocol-version-linux.html
译者:geekpi校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出

本文地址:http://www.linuxprobe.com/how-linux-ssh.html

<think>好的,我现在需要帮助用户查询凝思Linux系统上的SSH版本。首先,我应该回忆一下常见的查询SSH版本的方法,因为不同的Linux发行版可能有略微不同的命令或工具。 用户提到的凝思Linux,可能是一个基于Debian或其他主流发行版的定制系统,但基本的SSH命令可能还是通用的。常见的查询SSH版本的方法通常有两种:通过ssh命令的-V选项查看版本信息,或者检查安装的openssh版本。 首先,用户可能没有安装SSH,或者可能使用的是OpenSSH的不同版本。我需要考虑这两种情况。首先,检查ssh -V的输出。这个命令会显示SSH客户端的版本,例如OpenSSH版本号。但需要注意,有些系统可能将ssh客户端和服务器分开安装,所以可能需要同时检查sshd版本。 接下来,如果用户系统中没有ssh命令,可能需要安装openssh-client或者openssh-server包。不过,凝思Linux作为专用系统,可能已经预装了SSH,但版本可能较旧或定制过。用户可能需要使用包管理器来查询已安装的版本,比如使用dpkg(Debian系)或rpm(Red Hat系)来查看openssh相关的包版本。不过,不确定凝思使用的是哪种包管理工具,可能需要用户尝试。 另外,还可以通过查看SSH服务器的配置文件或者运行中的进程来获取版本信息,例如通过查看sshd的进程参数,或者连接本地SSH端口获取banner信息。但这种方法可能需要更多步骤,或者权限问题。 可能的步骤总结: 1. 使用ssh -V命令查看客户端版本。 2. 检查sshd -V(但注意sshd可能不允许直接运行-V,需要其他方法)。 3. 查看openssh-server的包版本。 4. 查看系统日志或sshd的启动日志。 5. 连接本地端口获取banner。 不过,常见且直接的方法应该是第一种和第三种。我需要验证这些步骤的正确性,并考虑可能出现的错误情况,例如命令不存在、权限不足等。 另外,需要提醒用户注意权限问题,某些命令可能需要root权限才能执行,例如查看服务端版本或包信息。如果用户没有权限,可能需要sudo或者联系管理员。 现在,我需要将这些步骤组织成用户容易理解的中文回答,结构清晰,分步骤说明,并指出可能的问题和解决方法。</think>在凝思 Linux 系统中查询 SSH 版本,可通过以下步骤实现: --- ### **方法 1:通过 `ssh -V` 命令查询客户端版本** 1. 打开终端。 2. 输入命令: ```bash ssh -V ``` 3. 输出示例: ```bash OpenSSH_8.2p1, OpenSSL 1.1.1k 25 Mar 2021 ``` - 其中 `OpenSSH_8.2p1` 为 SSH 客户端版本。 --- ### **方法 2:查询 SSH 服务端版本** 若需查询 SSH 服务端(`sshd`)版本: 1. 查看 SSH 服务状态(需 root 权限): ```bash sudo systemctl status sshd ``` 输出中可能包含版本信息(如 `OpenSSH` 版本)。 2. 若未显示版本,尝试通过包管理器查询: - **Debian/Ubuntu 系**: ```bash dpkg -l openssh-server ``` - **RHEL/CentOS 系**: ```bash rpm -qi openssh-server ``` --- ### **方法 3:通过 SSH 本地连接获取版本** 1. 尝试连接本地 SSH 端口: ```bash telnet localhost 22 ``` 或使用 `nc`: ```bash nc localhost 22 ``` 2. 输出示例: ```bash SSH-2.0-OpenSSH_8.2p1 ``` - `OpenSSH_8.2p1` 即为服务端版本。 --- ### **注意事项** 1. 若命令未找到(如 `ssh` 或 `telnet`),需安装对应工具: ```bash sudo apt install openssh-client netcat # Debian/Ubuntu 系 sudo yum install openssh-clients nmap-ncat # RHEL/CentOS 系 ``` 2. 凝思 Linux 可能基于不同发行版定制,若步骤不适用,建议查阅官方文档。 --- 通过上述方法,可准确获取凝思 Linux 系统中 SSH 的客户端和服务端版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值