首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在禁用弱ssh密码之后,我根本不能使用ssh。

在禁用弱ssh密码之后,我根本不能使用ssh。
EN

Unix & Linux用户
提问于 2022-04-21 22:56:34
回答 1查看 1.1K关注 0票数 1

我的目标是在linux机器上禁用弱ssh密码(特别是Lubuntu14.10--是的,旧的,有硬件兼容性的原因,现在不能更改)。

首先,我检查了一下,我确实可以用各种密码进入机器。例如,ssh USER@HOST -c aes256-cbcssh USER@HOST -c aes256-ctr提示我输入密码并让我进去。

我将以下内容添加到/etc/ssh/sshd_config文件的底部。

代码语言:javascript
复制
# 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连接或类似的服务。不过,我似乎没有一个在跑步。它不在服务清单上。当我尝试重新启动时,我得到了以下内容:

代码语言:javascript
复制
$ service sshd restart
sshd: unrecognized service

所以,我刚刚重新启动了机器。

即使没有运行此服务,我添加的行也在执行某些操作,因为在更新配置文件和重新启动之后,我根本无法使用任何密码在其中执行ssh。它拒绝连接,而不是给我预期的“找不到匹配的密码”(现在应该是禁用的密码)。

代码语言:javascript
复制
$ 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,因为它不是偶数运行,这一事实很奇怪。也许我误解了我正在做的事情。或者,问题是我用的是这个旧版本?

代码语言:javascript
复制
$ 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的配置选项。我认为此承诺可能就是它添加的地方。

代码语言:javascript
复制
$ 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)
EN

回答 1

Unix & Linux用户

发布于 2022-04-22 08:01:48

当您不确定服务是否会恢复时,您的关键错误是重新启动,但让我们按原样来处理。

您提到了硬件;我希望这意味着您可以在紧要关头对机器进行物理访问,这样您就可以登录到控制台。

一旦您这样做(或者其他人代替您管理,如果机器托管在其他地方),我非常肯定您会发现服务的名称是ssh而不是sshd,这意味着service ssh status应该给您一个概述,如下所示:

代码语言:javascript
复制
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 -tsshd -T将对配置进行一次模拟运行测试,并指出错误,这样您就不必冒着重新启动sshd进程的风险,因为您不确定它是否会重新启动。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/699928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档