我如何知道当前运行的 SSH 服务器是 OpenSSH 还是 Dropbear?

Ahm*_*Was 8 linux ssh dropbear

如果我进入文件/etc/ssh/ssh_config,我可以在文件顶部看到“$OpenBSD”。但是,如果我将默认端口更改为不同的值,它似乎不起作用。一位同事告诉我,这是因为 Dropbear 是这里的软件服务器,而不是OpenSSH

有没有办法确定?我在谷歌上找不到答案。

Mic*_*ton 23

连接到 ssh 端口(例如 22)并检查横幅。

$ nc 10.0.0.10 22
SSH-2.0-OpenSSH_8.6
Run Code Online (Sandbox Code Playgroud)

  • 为了完整起见,Dropbear 的横幅以“SSH-2.0-dropbear”开头。 (8认同)

Jar*_*und 5

大多数(如果不是全部?)SSH 服务器在连接后立即发送某种版本字符串。在我的一个小型研究项目中,我尝试在大型 IPv4 空间中映射 SSH 服务器版本,我所做的基本上是nc address port.

我将它烘焙到一个带有超时的 perl 脚本中,以便在我这边更容易处理,以及一个带有默认值的可选超时:

#!/usr/bin/perl
use warnings;
use strict;

unless ($ARGV[0] && $ARGV[1]) {  die "Usage: ./raw hostname port [timeout]\n" }
my $timeout = '10s';
if ($ARGV[2]) {  $timeout = $ARGV[2] }

my $response = `timeout $timeout nc $ARGV[0] $ARGV[1]`;
print $response;
Run Code Online (Sandbox Code Playgroud)

在我的网络上的服务器上测试它:

./sshbanner.pl 172.16.16.11 22
SSH-2.0-OpenSSH_5.3
Run Code Online (Sandbox Code Playgroud)