我收到了一份渗透测试报告,其中需要升级的一项是 Red Hat Linux 7.7 服务器上的 OpenSSH 和 OpenSSL。报告中提到 SSH 的版本是:
ssh -v
OpenSSH_6.1p1, OpenSSL 1.0.1q 3 Dec 2015
当我检查时如下:
sshd -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
或者
yum list installed openssh\*
已加载插件:product-id、rhnplugin、search-disabled-repos、subscription-manager
该系统正在从 RHN Classic 或 Red Hat Satellite 接收更新。
已安装的软件包
openssh.x86_64 7.4p1-21.el7 @prd-rhel-7
openssh-clients.x86_64 7.4p1-21.el7 @prd-rhel-7
openssh-server.x86_64 7.4p1-21.el7 @prd-rhel-7
所以我有点困惑我的服务器上的 OpenSSH 版本实际上是哪个。
有人可以解释一下哪个是我的版本,是返回的版本ssh -v
还是返回的版本sshd -v
?
谢谢你!
答案1
在我检查的示例 RHEL 7.7 主机上,ssh -V
两者sshd -V
都返回相同的版本OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
。
如果您ssh -V
在目标服务器上运行时得到不同的结果,那么我会说要么您的路径中有额外的 SSH 二进制文件(which ssh
将显示它们的位置),要么有人替换了原始客户端二进制文件(rpm -V openssh-clients
将显示文件是否与 RPM 数据库认为它们应该是什么相符)。
否则,我会要求澄清如何确定 SSH 的版本。
答案2
如果您运行它,ssh -v
它将显示您用于连接其他机器的 ssh 命令的版本。
另一方面,sshd
是允许连接到您的机器的守护进程。
您可以看到每个命令的库是不同的:
$ which ssh
/usr/bin/ssh
和:
$ which sshd
/usr/sbin/sshd
另外,您可以检查服务正在运行的命令sshd
:
$ systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
[...]
$ cat /usr/lib/systemd/system/sshd.service
[...]
ExecStart=/usr/sbin/sshd -D $OPTIONS
[...]
您可以尝试列出所有软件包,并查看每个openssh
软件包的版本。
$ rpm -qa | grep ssh
openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
libssh2-1.8.0-3.el7.x86_64
如果您有不同的版本,您可以尝试更新它:
$ sudo yum update openssh openssh-server openssh-clients