Ограничить SSH-туннель для определенного пользователя

Ограничить SSH-туннель для определенного пользователя

Я открыл ssh-туннель на своем шлюзе следующим образом:

autossh -M 30000 -f -N example.com -L \*:20022:192.168.1.40:22

Как мне сделать так, чтобы пользователь, скажем, Джон, использовал только этот туннель ssh и ограничил всех других пользователей, которые у меня есть, чтобы ни один пользователь, кроме Джона, не мог использовать ssh, используя порт 20022? Обратите внимание, что пользователь john не существует на моем шлюзе, ни как локальный пользователь, ни в LDAP.

решение1

Если клиент — это хост Linux, вы можете сделать это с помощьюiptables:

iptables -A OUTPUT --dest 192.168.1.40 --dport 22 -m owner --uid-owner john -j ACCEPT
iptables -A OUTPUT --dest 192.168.1.40 --dport 22 -j REJECT

Обратите внимание, что это условие касается адреса назначения и порта, а не исходного порта 20022. Если вы действительно хотите ограничить доступ только к одному исходному порту, то вы можете использовать --sport 20022вместо --destи --dport. Но, конечно, это не помешает другому пользователю открыть аналогичный туннель на другом порту.

решение2

Опубликуйте только открытый ключ Джона в файле authorized_keys на шлюзе. Отключите pw auth.

Связанный контент