Можно ли настроить SSH (в Linux), чтобы разрешить доступ только для туннелирования? Т.е. пользователь может настроить туннели, но не может получить шелл / доступ к файлам?
linux
ssh
ssh-tunnel
второй
источник
источник
-N
, у него есть доступ к оболочке. Это действительно не решает проблему и является опасным./bin/false
оболочка, у вас не будет доступа к оболочке, так как каждый сеанс входа в систему будет немедленно прекращен.В пользовательском файле .ssh / authorized_keys поместите что-то вроде следующего:
Таким образом, в основном, вы должны находиться перед открытым ключом ssh пользователя, разделенным пробелом. В этом примере соединениям, использующим определенный открытый ключ, будет разрешено выполнять переадресацию порта SSH только на сервер MySQL 192.168.1.10 и веб-сервер 10.0.0.16, и не будет назначена оболочка (no-pty). Вы конкретно спрашиваете об опции «no-pty», но другие также могут быть полезны, если пользователь должен только туннелировать на определенные серверы.
Посмотрите man-страницу для sshd, чтобы узнать больше о параметрах файла авторизованных ключей .
Обратите внимание, что пользовательский опыт может выглядеть немного странно: когда он входит в ssh, это будет выглядеть так, как будто сеанс зависает (так как он не получает pty). Ничего страшного. Если пользователь указал переадресацию порта с помощью, например, «-L3306: 192.168.1.10: 3306», переадресация порта все еще будет действовать.
В любом случае, попробуйте.
источник
no-pty
не предотвращает доступ к оболочке, просто не дает оболочке pty. Он не отображает приглашение (т. Е. «Кажется, что зависает»), но вы все равно можете давать команды просто отлично. Вам нужнаcommand="..."
опция,.ssh/authorized_keys
если вы хотите оттуда ограничить доступ к оболочке.Дайте пользователю оболочку, которая только позволяет ему выходить из системы, такой как
/bin/press_to_exit.sh
Таким образом он может оставаться в системе сколько угодно, с активными туннелями, но не запускать никаких команд.
Ctrl-c
закрывает соединениеисточник
Назначьте оболочку, которая не позволяет пользователю войти в систему.
например
будет препятствовать тому, чтобы они получали приглашение оболочки, и давал бы им тайм-аут 60 секунд - если в течение 60 секунд не будет никакого активного соединения, то он выйдет и тем самым полностью их отключит (увеличьте число в соответствии с требованиями).
Они также не могут выполнить удаленную команду, потому что эта оболочка не позволит им.
источник
logout
" на обычном./sbin/nologin
, что вы можете настроить с помощью удобного сообщения в/etc/nologin.txt
.Мое решение состоит в том, чтобы предоставить пользователю, который может только туннелировать, без интерактивной оболочки , установить эту оболочку в / etc / passwd в / usr / bin / tunnel_shell .
Просто создайте исполняемый файл / usr / bin / tunnel_shell с бесконечным циклом .
Кроме того , воспользоваться
AllowGroups
иMatch Group
опцией.Полностью объяснено здесь: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
источник