如何找到当前连接的当前 SSH 协议版本?

cod*_*iac 46 linux ssh centos6

我使用PuTTY连接到 Linux 机器(CentOS 6.4)。除了我可以将 PuTTY 设置为仅使用一种类型的协议之外,我如何才能找到当前的 SSH 连接版本(SSH1 或 SSH2)?

cst*_*mas 55

一进门就说:

ssh -v localhost
Run Code Online (Sandbox Code Playgroud)

它会告诉您服务器的确切版本。

  • 这似乎没有显示当前的连接类型。 (6认同)

小智 27

另一种方式。

正如cstamas 所建议的,您可以使用ssh -v localhost. 你只需在详细模式下 ssh 到你自己 127.0.0.1,这将显示进度的调试消息。是的,通过这个过程你可以查看通信的顶部,你可以得到你当前运行的SSH版本。

但是,如果您阅读该ssh man页面,您会发现该-V选项ssh更有用。取出ssh手册页

-V 显示版本号并退出。

-v 详细模式。使 ssh 打印有关其进度的调试消息。这有助于调试连接、身份验证和配置问题。多个 -v 选项会增加详细程度。最大值为 3。

所以我认为最好简单地做ssh -V并获得类似的东西:

> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Run Code Online (Sandbox Code Playgroud)

  • 那是 _program_ 的版本,而不是用于连接的协议。正如 3 年前的回答正确解释的那样,完全相同的程序可以支持 SSH1 和 SSH2 协议,也可以不支持,具体取决于配置。 (4认同)

dav*_*vey 14

油灰

Session , Logging 中,选择“SSH 数据包和原始数据”单选按钮。在您选择的位置选择作为putty.log的日志文件。进行连接。你应该看到:

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
Run Code Online (Sandbox Code Playgroud)

有关 SSH-2.0 含义的详细信息,请参见下文。

其他方法

您也可以尝试使用 telnet 客户端,但指向端口 22:

telnet test1 22
Run Code Online (Sandbox Code Playgroud)

连接后,您将看到:

正在尝试 192.168.144.145...
连接到 test1。
转义字符是“^]”。
SSH-2.0-OpenSSH_5.3

最后一行是要查找的行:

SSH-2.0-OpenSSH_5.3
Run Code Online (Sandbox Code Playgroud)

如果它说SSH-2.0那很好,那么您连接的 SSH 服务器仅支持 SSH 协议版本 2。它不支持来自 SSH V1 协议客户端的连接。

但是,如果您看到:

SSH-1.99-OpenSSH_5.3

那么这意味着服务器端仍然支持 SSH 协议版本 1。它的sshd_config文件中有这样的内容:

Protocol 1,2
Run Code Online (Sandbox Code Playgroud)

协议 1 易受攻击,不应使用。

所以要弄清楚。如果您在 telnet 到远程服务器的端口 22 时看到 SSH-2,那么您只能使用 SSH 协议版本 2,因为服务器不支持协议 1。

根据上面的 cstamas 回答,该-v标志将显示一行:

debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3
Run Code Online (Sandbox Code Playgroud)

或者:

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
Run Code Online (Sandbox Code Playgroud)

你想去那里看看version 2.0


Jos*_*ler 5

我更喜欢这个:

$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$
Run Code Online (Sandbox Code Playgroud)

这里的好处是它可以通过编程方式完成,因为连接没有保持打开状态。对于 Python,请尝试:

ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))
Run Code Online (Sandbox Code Playgroud)