Я хотел бы установить SSH-туннель, но я в общей системе. Я бы не хотел делиться доступом к туннелю с остальными пользователями. Есть ли способ ограничить локальный порт только для моего использования в качестве обычного пользователя?
1 ответ
Нет, пользователь не может ограничить доступ к сокету TCP/UDP таким образом; вы хотите использовать для этого сокет unix, потому что они отображаются в виде файла в файловой системе и к ним могут быть применены разрешения. Проблема здесь заключается в том, что я не думаю, что есть какие-либо клиенты SSH, которые поддерживают создание туннелей сокетов Unix (а сервер OpenSSHd этого не делает, поэтому вам нужно запустить настроенный клиент SSH в общей системе и SSH, чтобы вернуться к где вы хотите, чтобы была другая конечная точка туннеля SSH). Кроме того, вы должны убедиться, что приложения, которые вы хотите туннелировать, поддерживают Unix-сокеты, чего не может быть.
Если приложение, которое вы хотите туннелировать, поддерживает каналы файловой системы или сокеты Unix, то вам может повезти, но для этого все равно потребуется немало работы. Вы можете попробовать создать программу, которая открывает сокет unix и подключает его к STDIN/STDOUT, а затем использует SSH в неинтерактивном режиме для туннелирования этих данных по каналам PTY по умолчанию вместо туннеля сокетов. Используйте ту же программу на другом конце соединения SSH, чтобы подключить ее к локальному сокету Unix.
Вуаля! Туннель сокетов, защищенный через SSH, с дополнительными разрешениями и ACL на обоих концах. Создание программы (иначе, сложная часть) оставлено в качестве упражнения для читателя.