Я открыл ssh-туннель на своем шлюзе следующим образом:
autossh -M 30000 -f -N example.com -L \*:20022:192.168.1.40:22
Как я могу заставить пользователя, скажем, Джона, использовать только этот туннель ssh и ограничить всех остальных пользователей, которые у меня есть, чтобы ни один пользователь, кроме Джона, не мог использовать ssh через порт 20022? Обратите внимание, что пользователь john не существует на моем шлюзе, будь то локальный пользователь или в LDAP.
Публикуйте только открытый ключ Джона в файле authorized_keys на шлюзе. Включите pw auth.
Если клиент является хостом 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
. Но, конечно, это не помешает другому пользователю открыть аналогичный туннель на другом порту.