SSH 代理账户可以不带 Shell 工作
在禁用 Shell 会话的同时保留 SSH 转发,并理解仅强制 SOCKS 的局限。
诱人的设置是 AllowTcpForwarding no。不幸的是,它也会禁用 本地 SSH SOCKS 代理所需的转发。动态转发并不是绕过服务器策略的漏洞。
对于专用账户,OpenSSH 将若干能力分开。一段策略配置可以在阻止 Shell 和子系统会话的同时允许本地转发:
Match User proxyuser
AllowTcpForwarding local
MaxSessions 0
PermitTTY no
X11Forwarding no
AllowAgentForwarding no
服务器手册 将 MaxSessions 0 描述为在允许转发的同时阻止 Shell、登录和子系统会话。把它整合进现有的已认证账户;它不是完整的 SSH 安全配置。
仅转发并不等于仅 SOCKS
固定的本地转发和 SOCKS 请求最终可能向服务器要求同类的目的连接。允许本地转发并不能保证客户端使用了某个特定的 SOCKS 接口。不要把该账户描述为强制仅使用 SOCKS。
当某个具体清单符合需求时,PermitOpen 可以限制 目的主机与端口对。它不是对所有专用网络都考虑主机名解析的通用禁令。更宽泛的地址限制可能需要合适的主机网络策略。
账户、密钥以及所包含的服务器设置可能进一步限制转发。其他地方的一揽子转发禁令可能移除本片段看似允许的能力。
使用带恢复路径的常规服务器管理流程,然后分别评估被允许和被拒绝的能力。期望的结果是明确的转发权限,而不是意外保留可用的交互式登录,也不是被自身限制禁用的代理。