我的目标是在linux机器上禁用弱ssh密码(特别是Lubuntu14.10--是的,旧的,有硬件兼容性的原因,现在不能更改)。
首先,我检查了一下,我确实可以用各种密码进入机器。例如,ssh USER@HOST -c aes256-cbc和ssh USER@HOST -c aes256-ctr提示我输入密码并让我进去。
我将以下内容添加到/etc/ssh/sshd_config文件的底部。
# Cryptographic Policy
# See https://www.ssh.com/academy/ssh/sshd_config#cryptographic-policy
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa,ssh-dss
KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256
MACs hmac-sha2-256,hmac-sha2-512现在,我希望这些更改生效,我到处读到我应该重新启动sshd服务。我假设这必须是侦听ssh连接或类似的服务。不过,我似乎没有一个在跑步。它不在服务清单上。当我尝试重新启动时,我得到了以下内容:
$ service sshd restart
sshd: unrecognized service所以,我刚刚重新启动了机器。
即使没有运行此服务,我添加的行也在执行某些操作,因为在更新配置文件和重新启动之后,我根本无法使用任何密码在其中执行ssh。它拒绝连接,而不是给我预期的“找不到匹配的密码”(现在应该是禁用的密码)。
$ ssh USER@HOST -c aes256-cbc
ssh: connect to host port 22: Connection refused
$ ssh USER@HOST -c aes256-ctr
ssh: connect to host port 22: Connection refused如果我删除这些行并重新启动,我可以像以前一样重新启动。
在我看来,将这些行添加到sshd_config文件中似乎破坏了ssh。我无法重新启动sshd,因为它不是偶数运行,这一事实很奇怪。也许我误解了我正在做的事情。或者,问题是我用的是这个旧版本?
$ ssh -V
OpenSSH_6.6.1p1 Ubuntu-8, OpenSSL 1.0.1f 6 Jan 2014提前感谢您的洞察力。我希望我写的是清楚的,当然,如果需要的话,我很乐意提供更多的细节。
-更新
谢谢你的回答和评论。由此我发现,对于这台机器,我不应该重新启动sshd,我应该重新启动的服务称为ssh。我能够重新启动服务,并通过运行sudo service ssh restart实现对/etc/ssh/sshd_config所做的更改。这比重新启动更方便,正如大家已经指出的,风险更小。
在重新启动ssh之后,我的行为与以前重新启动后的行为相同:所有连接都被拒绝。我现在猜Shadur是对的,一个错误,或者我要求它使用的一个或多个密码或算法都不被这个版本所接受。
-更新2-如果我去掉HostKeyAlgorithms选项的话-这是可行的。这似乎不是OpenSSH 6.6的配置选项。我认为此承诺可能就是它添加的地方。
$ ssh USER@HOST -c aes256-cbc
Unable to negotiate with port 22: no matching cipher found. Their offer: aes128-ctr,aes192-ctr,aes256-ctr
$ ssh USER@HOST -c aes256-ctr
USER@HOST's password:
Welcome to Ubuntu 14.10 (GNU/Linux 3.16.0-23-generic i686)发布于 2022-04-22 08:01:48
当您不确定服务是否会恢复时,您的关键错误是重新启动,但让我们按原样来处理。
您提到了硬件;我希望这意味着您可以在紧要关头对机器进行物理访问,这样您就可以登录到控制台。
一旦您这样做(或者其他人代替您管理,如果机器托管在其他地方),我非常肯定您会发现服务的名称是ssh而不是sshd,这意味着service ssh status应该给您一个概述,如下所示:
shadur@periapsis:~$ service ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-04-21 21:45:37 CEST; 12h ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 1357 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 1362 (sshd)
Tasks: 4 (limit: 19080)
Memory: 7.2M
CPU: 5.703s
CGroup: /system.slice/ssh.service
├─ 1362 "sshd: /usr/sbin/sshd -D [listener] 2 of 10-100 startups"
├─42848 "sshd: [accepted]"
├─42903 "sshd: root [priv]"
└─42904 "sshd: root [net]"接下来是一些日志条目,详细说明了sshd进程必须说的最后几件事。
或者,您可以使用journalctl -u ssh.service检查日志输出。
我的猜测是,您在某个地方有一个错误,或者引用了一种加密方法,该方法表示较早版本的ssh不知道。
作为将来的参考,sshd -t或sshd -T将对配置进行一次模拟运行测试,并指出错误,这样您就不必冒着重新启动sshd进程的风险,因为您不确定它是否会重新启动。
https://unix.stackexchange.com/questions/699928
复制相似问题