验证sshd配置


19

如何验证的配置sshd

例如,我要确保已设置并应用以下设置:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

是手动验证文件内容的唯一方法sshd_config,还是我sshd可以进行探测以确保?


2
验证是什么意思?您是否在问如何确保所做的配置更改有效?您是否在询问是否存在诸如lint之类的工具来检查有效配置?
Zoredache

2
我认为问题并不明确:实际上没有任何方法可以检查config选项的值。如果#UseLogin no在ssd_config文件中看到,则表示UseLogin为yes或UseLogin为no?您必须参考手册以找到默认值,该默认值可以在编译过程中进行更改。到目前为止,没有一个无用的问题……
Xorax

Answers:


27

有一个扩展的测试模式,可以通过命令行选项来调用-T。例如:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

自2008年以来,该选项已在Portable OpenSSH中存在,请参见。 提交e7140f2。随同2008年7月制作的5.1p1一起发布,请参见。5.1的发行说明,因此它几乎存在于当今支持的所有OpenSSH服务器安装中。


3
但是请注意,这将显示/etc/ssh/sshd_config文件的默认设置+设置。该文件中的设置可能实际上尚未激活,直到sshd在系统上重新加载了类似的文件/etc/init.d/ssh reload或等效文件。
mivk

2
@mivk是个好主意,但这在本课程中几乎是正确的,因为通常在更改之后,实际应用它们之前,我们正好使用这些类型的命令,因为我们想验证将要发生的事情。例如,apache2ctl -S行为相同。
Josip Rodin

4

尽管这不会转储所有服务器定义,但是您可以尝试使用详细的调试标志连接到服务器:ssh -v user@server。这将为您提供很多信息,这些信息将反映sshd配置中启用的选项。

例如,使用-v开关查看此连接的输出(有意伪装的密钥签名,域和IP地址):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.

从中可以看到允许的身份验证方法是:publickey,password,keyboard-interactive。您还可以看到此服务器不允许漫游,并且用户claudio可以使用其公共密钥进行连接。

您可以提高信息输出的级别,指定更多的“ v”字母,但是这样一来,您可能会得到比您想要的更多的低级别信息。


3

sshd的配置通常在以下文件中找到:/etc/ssh/sshd_config

要查询运行时配置,可以使用扩展测试模式sshd -T,该模式还允许您测试客户端的设置匹配。


1
我认为这不能回答他所提出的问题,但他的问题尚不完全清楚。
Zoredache

1
看起来他在询问如何验证配置。据我所知,没有办法在运行时查询sshd的配置。因此,只能在我提到的文件中找到该配置。
gparent

就像您说的那样,该问题没有任何意义,因此我认为OP可能不知道文件的位置或确切名称。
gparent

如果您在4年后绝对无正当理由要对我投反对票,请使用常识并检查问题历史记录,然后提出修改建议。
gparent

@gparent,最初的问题有点含糊,并且在配置文件路径中有一个错字,因此您应该使用edit函数来在问题中修复该字符串;无论哪种方式,验证问题的答案现在都显示在上方
Josip Rodin'Roll''Marc '31

2

我认为,没有已知的方法来查询正在运行的sshd实例的配置,如果您引用的是openssh服务器。根据您要执行的操作,可以在重新启动服务器之前使用-t标志测试配置文件以确保该文件有效,以免被踢出,尤其是。如果您对服务器没有任何带外访问。


2

如其他答案所示,查看/ etc / ssh / sshd_config文件的问题是它不一定包含整个配置。该文件包含要设置为覆盖默认值的所有配置变量的值,并且出厂时已将sshd内置的默认值包含为注释。

如果安装了自定义配置文件来代替出厂版本,则您将看不到编译到sshd中的默认值,如果它是自定义版本,则默认值可能与sshd_config中可见的注释不匹配。

此外,完全可以通过-f选项与另一个配置文件一起运行sshd,因此存储在/ etc / ssh / sshd_config中的文件可能无法反映当前设置。

这使问题相当有效,据我所知,无法确定地回答。


所有这一切是真实的,但它并不适用于运行阶段从编译默认配置的软件包安装的sshd服务器的99%。
安德鲁·舒尔曼

您的回答很有用,但是确实可以肯定地回答该问题,已经存在了一段时间,请在下面查看我的回答。
Josip Rodin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.