туннелирование ssh только доступа

Это были годы, с тех пор как я в последний раз коснулся PHP, но если я вспоминаю правильно, что можно назвать внешнее (оболочка) команда от него и впитать результаты. Под тем предположением, если сервер Вы имеете дело с, поле Unix/Linux, Вы могли бы обратиться к команде 'находки' и позволить ей сделать работу.

Базовый синтаксис был бы: find /your/web/root/here/ -mtime -5 -print если Вы хотели список всех файлов, измененных за прошлые 5 дней.

Просто запишите обертку PHP вокруг той команды (измененный по мере необходимости), чтобы выполнить его и отобразить результаты на странице для Вас. Я думаю, что это должно добиться цели.

31
задан 20 August 2009 в 13:43
6 ответов

Да, просто используйте /bin/false как окружают и дают пользователю команду запускать туннелирование процесс SSH, не выполняя удаленной команды (т.е. -N флаг для OpenSSH):

ssh -N -L 1234:target-host:5678 ssh-host
42
ответ дан 28 November 2019 в 19:57

Присвойте оболочку, которая не позволяет пользователю войти в систему.

например.

#!/bin/sh
echo "No interactive login available."
sleep 60
exit 0

препятствовал бы тому, чтобы они получили приглашение оболочки и дал бы им тайм-аут 60 секунд - если не будет никакого соединения, активного в течение 60 секунд затем, то это выйдет и таким образом разъединит их полностью (увеличьте число согласно требованиям).

Они не могут выполнить удаленную команду, также, потому что та оболочка не позволит им.

2
ответ дан 28 November 2019 в 19:57
  • 1
    Большинство установок Linux уже идет с чем-то для этого./sbin/nologin или/bin/false или подобный. –  Rory 20 August 2009 в 14:27
  • 2
    Что Ctrl-C выполнил бы в вышеупомянутом примере? –  Arjan 20 August 2009 в 15:00
  • 3
    Arjan: Так как сценарий используется в качестве оболочки, Ctrl-C имел бы тот же эффект как " logout " на нормальном. –  grawity 20 August 2009 в 15:47
  • 4
    Я на самом деле как earl' s ответ, с "-N" опция, но если Вы хотите дать Вашему пользователю полезное, дружественное, информативное сообщение - и остановить их оставляющий соединения SSH повсеместно - затем пользовательский сценарий, хороша и ясна о какой it' s выполнение. –  jrg 20 August 2009 в 20:06

В пользовательском файле .ssh / authorized_keys поместите что-то вроде следующего:

permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...

Итак, в основном, вы должны находиться перед открытым ключом ssh пользователя, разделенным пробелом. В этом примере соединениям с использованием определенного открытого ключа будет разрешено перенаправление портов SSH только на сервер MySQL 192.168.1.10 и веб-сервер 10.0.0.16, и им не будет назначена оболочка (no-pty). Вы конкретно спрашиваете о опции "no-pty", но другие могут быть полезны, если пользователь должен туннелировать только к определенным серверам.

Посмотрите на страницу руководства для sshd дополнительные параметры для файла authorized_keys .

Обратите внимание, что пользователь опыт может выглядеть немного странно: когда они подключатся по ssh, это будет выглядеть так, как будто сеанс завис (поскольку они не получают pty). Все нормально. Если пользователь указал переадресацию порта, например, «-L3306: 192.168.1.10: 3306», переадресация порта все равно будет действовать.

В любом случае попробуйте.

это будет выглядеть так, как будто сеанс завис (поскольку они не получают pty). Все нормально. Если пользователь указал переадресацию порта, например, «-L3306: 192.168.1.10: 3306», переадресация порта все равно будет действовать.

В любом случае попробуйте.

это будет выглядеть так, как будто сеанс завис (поскольку они не получают pty). Все нормально. Если пользователь указал переадресацию порта, например, «-L3306: 192.168.1.10: 3306», переадресация порта все равно будет действовать.

В любом случае попробуйте.

10
ответ дан 28 November 2019 в 19:57

Предоставьте пользователю оболочку, которая позволяет им только выходить из системы, например /bin/press_to_exit.sh

#!/bin/bash
read -n 1 -p "Press any key to exit" key

Таким образом, он может оставаться в системе столько, сколько захочет, с активными туннелями, но не выполнять никаких команд. Ctrl-c закрывает соединение.

4
ответ дан 28 November 2019 в 19:57

Мое решение - предоставить пользователю кто только может туннелировать, без интерактивной оболочки , чтобы установить эту оболочку в / etc / passwd на / usr / bin / tunnel_shell .

Просто создайте исполняемый файл / usr / bin / tunnel_shell с бесконечным циклом .

Дополнительно используйте параметр AllowGroups и Match Group .

Полностью объяснено здесь: http://blog.flowl.info/2011/ssh- туннель-группа-только-и-без-оболочки-пожалуйста /

0
ответ дан 28 November 2019 в 19:57
​##Create a new user

sudo useradd -m [user]

##Edit /etc/ssh/sshd_config

Match User [user]
   #AllowTcpForwarding yes
   #X11Forwarding no
   #PermitTunnel no
   GatewayPorts yes ##Enable listening on 0.0.0.0
   AllowAgentForwarding no
   PermitOpen localhost:2888 ##specify port
   ForceCommand echo 'This account can only be used for Tunneling'
1
ответ дан 20 April 2020 в 17:47

Теги

Похожие вопросы