具有两个 sshd 配置的 ssh_host_rsa 密钥

具有两个 sshd 配置的 ssh_host_rsa 密钥

我有一个系统,无密码 SSH 和 SFTP 已经运行多年,没有问题。我现在有一个需要 SFTP 的重要应用程序,但问题是这个应用程序目前不支持密钥身份验证。

我不想在主 SSH 服务上允许密码验证。我希望新服务仅允许特定用户。

因此,我创建了一个组 ( sftppwd),其中有两个用户(均在组中sftppwd),并创建了用户。我将 复制到/etc/ssh/sshd_config/etc/ssh/sshd8022_config并进行了以下更改:

diff sshd*_config
5c5
< Port 8022
---
> Port 22
23c23
< SyslogFacility LOCAL0
---
> SyslogFacility AUTH
28c28
< PermitRootLogin no
---
> PermitRootLogin prohibit-password
31,32c31,32
< #RSAAuthentication no
< PubkeyAuthentication no
---
> #RSAAuthentication yes
> PubkeyAuthentication yes
35,37d34
< 
< AllowGroups sftppwd
< 
92c89
< UsePAM no
---
> UsePAM yes
96c93,94
<     ForceCommand internal-sftp -d /%u
---
>     ForceCommand internal-sftp

我将复制sshd.service到新的ssh8022.service,并在那里做了一些更改:

diff sshd.service ssh8022.service
10c10
< ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
---
> ExecStart=/usr/sbin/sshd -D $SSHD_OPTS -f /etc/ssh/sshd8022_config
22c22
< Alias=sshd.service
---
> Alias=ssh8022.service

并启动了服务。当我尝试登录新服务时,出现以下错误/var/log/auth.log

Apr  6 20:46:03 web sshd[529209]: error: Public key for /etc/ssh/ssh_host_rsa_key does not match private key

此错误不会在端口 22 配置中发生,只会在 8022 配置中发生。两者都配置为使用相同的密钥(这是我所期望的,我也希望它能正常工作),但这里显然有些不对劲。

您知道我可能错过了什么步骤吗,或者我该如何解决这个错误?我需要创建一个新的密钥对吗?如果是这样,我是否还需要执行 DSA 和 ECDSA?

两种配置的 sshd 配置文件都包含以下内容:

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

编辑:这是目前两种配置中的 Match 组内容:

Match group sftppwd
    ForceCommand internal-sftp
    PasswordAuthentication yes
    ChrootDirectory /sftp-files
    PermitTunnel no
    X11Forwarding no
    AllowAgentForwarding no
    AllowTcpForwarding no

两个 sshd 进程都在 root 权限下运行,因此应该没有权限问题。而且,权限看起来符合我的预期。

ls -l /etc/ssh/s*key*
-rw------- 1 root root 1393 Nov  1  2022 /etc/ssh/ssh_host_dsa_key
-rw-r--r-- 1 root root  609 Nov  1  2022 /etc/ssh/ssh_host_dsa_key.pub
-rw------- 1 root root  513 Nov  1  2022 /etc/ssh/ssh_host_ecdsa_key
-rw-r--r-- 1 root root  181 Nov  1  2022 /etc/ssh/ssh_host_ecdsa_key.pub
-rw------- 1 root root  411 Nov  1  2022 /etc/ssh/ssh_host_ed25519_key
-rw-r--r-- 1 root root  101 Nov  1  2022 /etc/ssh/ssh_host_ed25519_key.pub
-rw------- 1 root root 2602 Nov  1  2022 /etc/ssh/ssh_host_rsa_key
-rw-r--r-- 1 root root  403 Nov 22  2022 /etc/ssh/ssh_host_rsa_key.pub

> ps -ef|grep sshd
root      528031       1  0 Apr06 ?        00:00:00 sshd: /usr/sbin/sshd -D -f /etc/ssh/sshd8022_config [listener] 0 of 10-100 startups
root      528139       1  0 Apr06 ?        00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root      545137  528139  0 07:21 ?        00:00:00 sshd: delovelady [priv]
delovel+  545219  545137  0 07:21 ?        00:00:00 sshd: delovelady@pts/1

编辑4月9日,上海

我不太清楚我在这里处理的是什么。我已将 Match Group 移至 sshd8022_config 文件的顶部,后面跟着 Match all 行。我已在此服务上设置了 LogLevel DEBUG3,然后停止并重新启动它。我已使用 netstat -tulpn 和 ps -fp 验证此服务正在使用此配置文件在端口 8022 上运行。然而,当发生此序列时:

ssh -p 8022 delovelady@localhost
delovelady@localhost's password: 
Permission denied, please try again.
delovelady@localhost's password: 
Permission denied, please try again.
delovelady@localhost's password: 
delovelady@localhost: Permission denied ().
root@web:/etc/ssh   04/08 22:17:18
> tail /var/log/auth.log

我在 auth.log 文件中根本看不到任何近期活动。这些都是 5 分钟前发生的

Apr  8 22:16:02 web CRON[606095]: pam_unix(cron:session): session closed for user **masked**
Apr  8 22:16:09 web CRON[606096]: pam_unix(cron:session): session closed for user fm-agent
Apr  8 22:17:01 web CRON[606123]: pam_unix(cron:session): session opened for user fm-agent(uid=996) by (uid=0)
Apr  8 22:17:01 web CRON[606122]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Apr  8 22:17:01 web CRON[606121]: pam_unix(cron:session): session opened for user **masked**(uid=1000) by (uid=0)
Apr  8 22:17:01 web CRON[606122]: pam_unix(cron:session): session closed for user root
Apr  8 22:17:01 web CRON[606121]: pam_unix(cron:session): session closed for user **masked**
Apr  8 22:17:10 web CRON[606123]: pam_unix(cron:session): session closed for user fm-agent
Apr  8 22:17:25 web CRON[606054]: pam_unix(cron:session): session closed for user **masked**

我一直遇到的一个问题是,记录日志似乎是一项越来越困难的任务(只有获取某些日志的难度才超过它)。除非/直到我能从日志中获取有用的信息,否则我就会陷入一个神秘的黑匣子。有人能帮忙吗?

相关内容