服务器拒绝转发连接:管理上禁止。同时使用 @IP 和 PermitOpen

服务器拒绝转发连接:管理上禁止。同时使用 @IP 和 PermitOpen

[本机是192.168.80.125]

允许所有基本访问的正常 SSH 规则:

AllowUsers                  user1
PubkeyAuthentication        yes
PasswordAuthentication      no
AllowTcpForwarding          yes
UsePAM                      no

匹配组测试

AllowUsers                  user2@IP1 user2@IP2 user2@IP3 user2@IP4
PubkeyAuthentication        yes
PasswordAuthentication      yes
AllowTcpForwarding          yes
    PermitOpen              192.168.80.100:80
    PermitOpen              192.168.80.125:443
AllowAgentForwarding        no

当我以用户 2 的身份从 IP1 连接到 sshd 时,我可以连接,我使用 PuTTY 打开我的隧道:

本地 S:IP1:8080 远程 D:192.168.80.100:80

本地源:IP1:8443 远程目标:192.168.80.125:443

我打开浏览器并浏览到 localhost:8080,结果连接重置。我打开浏览器并浏览到 localhost:8443,结果连接重置。

我检查 SSH 日志:

192.168.80.125 authlog: Received request to connect to host 192.168.80.100 port 80, but the request was denied.
192.168.80.125 authlog: Received request to connect to host 192.168.80.125 port 443, but the request was denied.]

Event Log: Opening connection to 192.168.80.125:443 for forwarding from [::1]:3585
Outgoing packet : (SSH2_MSG_CHANNEL_OPEN)
Incoming packet : (SSH2_MSG_CHANNEL_OPEN_FAILURE)
Event Log: Forwarded connection refused by server: Administratively prohibited [open failed]

OpenSSH_7.5p1 Ubuntu-10ubuntu0.1, OpenSSL 1.0.2g  1 Mar 2016

当以 user1 和 pubkey/etc 身份使用 SSH 时,我可以成功访问 192.168.80.125:80 / 192.168.80.125:443 处的资源,并且 TCP Forward 可以正确地对任何东西起作用。

我首先设置了 PermitOpen,这样就可以了。然后我添加了 user2@ 限制,结果却出了问题。

有没有更好的方法可以做到这一点?我想确保用户 2 只能通过隧道连接到指定的资源,并且只能从指定的 IP 登录。

我还注意到,当我以用户 2 身份登录并切换到用户 1 时,转发规则仍然基于用户 2。

答案1

这真是令人尴尬。显然我的 PermitOpen 语法不正确。

我发现如果列出多行 PermitOpen,则只有第一行实际上是有效的。

正确的语法:

PermitOpen <IP>:<port> <IP>:<port> <IP>:<port>... 以此类推,一行一个。

相关内容