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