首先,我想指出的是,我知道还有很多有关 SSH 代理转发的其他问题。那里的人们想知道如何使代理转发工作或如何安全地配置它。但我有相反的问题:似乎我不能可靠禁用它。那么我们开始吧:
我正在运行一个 Debian bullseye 系统,在撰写本文时是最新的,基本上是普通的。在该系统上,SSH 守护进程正在运行,其配置如下/etc/ssh/sshd_config
:
AcceptEnv LANG LC_*
AllowAgentForwarding no
AllowTcpForwarding no
AllowStreamLocalForwarding no
ChallengeResponseAuthentication no
Ciphers [email protected],[email protected]
Compression no
DebianBanner no
HostKeyAlgorithms rsa-sha2-512,ssh-ed25519
KbdInteractiveAuthentication no
KexAlgorithms curve25519-sha256,[email protected],diffie-hellman-group-exchange-sha256
ListenAddress aaa.bbb.ccc.ddd
LoginGraceTime 20
MACs [email protected],[email protected]
PasswordAuthentication no
PermitUserRC no
Protocol 2
# The first of the following version is the right one.
# However, for brain-dead WinSCP, we need the second version.
#PubkeyAcceptedKeyTypes rsa-sha2-512,rsa-sha2-256,ssh-ed25519
PubkeyAcceptedKeyTypes rsa-sha2-512,rsa-sha2-256,ssh-ed25519,ssh-rsa
RekeyLimit 100M 20m
Subsystem sftp /usr/lib/openssh/sftp-server
Match user copyremote
ChrootDirectory /backup
ForceCommand /usr/lib/openssh/sftp-server
这是完全的配置文件;除了它监听的 IP 地址之外,没有任何内容被删除或混淆。此外,没有其他地方包含 SSH 守护程序的附加配置片段。
基本上,该配置尝试关闭我不需要的每个功能,例如代理转发功能(注意:在该配置文件中,我没有添加默认情况下关闭的大多数功能的行(根据手册))。我们还看到身份验证完全基于公钥。
有一天,我正在调查用户copyremote
和 sftp 子系统的问题,因此将其-v
作为参数提供sftp
给客户端计算机。这导致以下输出(仅显示相关部分):
root@morn ~/scripts # sftp -v -i ~/.ssh/id_rsa_backup_user [email protected]:/backup/achilles.bsdtar.gz .
OpenSSH_8.4p1 Debian-5+deb11u1, OpenSSL 1.1.1n 15 Mar 2022
[...]
debug1: Remote: /home/usr/copyremote/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug1: Remote: /home/usr/copyremote/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
[...]
现在这太可怕了。我以为我已经在服务器上的系统范围配置文件中全局关闭了代理转发。然而,据我了解该输出,它提供了它。
有人可以解释一下我如何关闭代理转发(以及我不希望服务器提供的其他功能)全球?
这些功能可以在authorized_keys
文件中明确禁用,但是如果有多个用户并且每个用户都接受多个公钥,那么这将非常容易出错并且需要大量工作,因此我真的更希望能够一次将其关闭地方。
这是服务器上authorized_keys
用户的文件:copyremote
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDs6ku+LXaUBs....JFchhaoQ== me@client
那里没有什么特别的。值得注意的是,代理转发是不被明确允许的。那么为什么它不应用系统范围配置中的设置呢?
PS 我知道 SSH / SFTP chroot 没有提供我们期望的安全性。我已经在服务器上实施了进一步的措施来缓解该问题,因此不需要在这里讨论:-)
答案1
它只是说,如果全局启用了代理转发(实际上不是),则可以使用密钥(默认)进行代理转发。
日志条目仅显示解析authorized_keys
文件的结果。它基本上表示no-agent-forwarding
在相应的条目中未找到该标志。它绝不反映该AllowAgentForwarding no
指令。