Мне нравится создавать SSH-туннель, который действует как прокси-сервер SOCKS с такой командой:

ssh -i ~/.ssh/some_key -N -D 8000 someuser@remote.server.com

Это позволяет мне устанавливать локальные программы, такие как curl для обращения к ресурсам в частной сети remote.server.com :

curl --proxy socks5h://localhost:8000 192.168.10.10:9000

Могу ли я сделать ~/.ssh/some_key особого вида, у которого есть только разрешения на создание этого туннеля прокси-сервера SOCKS, но он не может войти или сделать что-то еще? В качестве альтернативы, могу ли я сделать пользователя someuser то особым типом пользователя, который принимает только SSH SOCKS туннельные соединения, но не другие SSH соединения?

1 ответ1

1

ssh клиент OpenSSH может сделать два типа переадресации через -L и -D Эти два типа переадресации работают на клиенте по-разному, но они используют те же функции протокола SSH и те же функции сервера SSH. Другими словами, они "выглядят" одинаково на сервере SSH.

Вы можете настроить сервер для ограничения сеанса переадресацией портов, но вы не можете специально ограничить их переадресацией портов через SOCKS. Сервер конкретно не знает, что конкретный запрос на пересылку связан с SOCKS.

Включить ключ SSH, помещая открытую часть ключа в authorized_keys файла на сервере SSH. Вы можете добавить директивы к каждому ключу, которые управляют использованием ключа.

Похоже, директивы ограничивают, переадресация портов должна выполнять то, что вы хотите. Вам также может понадобиться добавить директиву command = "/bin/false", чтобы запретить пользователю запускать команды. Существует также директива allowopen, которая ограничивает порты, на которые может перенаправлять пользователь, но вряд ли будет полезна при перенаправлении портов на основе SOCKS.

Соответствующая строка файла _authorized_keys_ будет выглядеть так:

restrict,port-forwarding,command="/bin/false" ssh-rsa AAAAB3NzaC1...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .