[Эта машина - 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
Когда я подключаюсь к sshd с IP1 как user2, я могу подключиться, я открываю свой туннель с помощью PuTTY:
Локальный S: IP1: 8080 Удаленный D: 192.168.80.100: 80
Локальный Src: 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
Я могу успешно получить доступ к ресурсам по адресу 192.168.80.125:80 / 192.168.80.125:443 при использовании SSH как user1 и pubkey / etc, а TCP Forward работает правильно с чем угодно.
Сначала у меня была установка PermitOpen, и это сработало. Затем я добавил ограничения user2 @, и это сломало это.
Есть лучший способ сделать это? Я хочу убедиться, что user2 может туннелировать только к указанным ресурсам и может входить в систему только с указанного IP-адреса.
Я также заметил, что когда я вхожу в систему как user2 и переключаюсь на user1, правила переадресации по-прежнему основаны на user2.
Ну, это неудобно. Видимо у меня был неправильный синтаксис PermitOpen.
Я обнаружил, что если вы перечисляете несколько строк PermitOpen, фактически активна только первая строка.
Правильный синтаксис:
PermitOpen <IP>:<port> <IP>:<port> <IP>:<port>
... И так далее в одной строке.