Вызвался настроить школьный сервер своему другу. В сельскую школу, где он работает, в рамках общероссийской программы провели интернет и там встал вопрос, как проконтролировать сетевую активность новоявленных интернет-пользователей (в лице школьников). Заодно привести в порядок локальную сеть школы.
Под сервер оперативно выделили компьютер. В выборе операционной системы остановились на Ubuntu. Но я, так как находился в километрах двухстах, нуждался в удаленном доступе. Проконсультировал через аську установку ОС и настройку удаленного доступа по ssh. Дальше меня ждал неприятный сюрприз – невозможность прямого соединения с сервером.
Решение было найдено в man-странице ssh. Спасением стали ключ «-R», создающий туннель c порта удаленной машины на локальный порт, и подконтрольный мне сервер («MY»), доступный со школы («SCHOOL»).
- На «
MY» создаем пользователя «user_my» и задаем ему пароль.
SCHOOL»- Создаем пользователя «
user_school» и добавляем его в список пользователейsudo. - Устанавливаем
openssh-serverиscreen$ sudo aptitude install openssh-server screen
- Запускаем сервер SSH
$ sudo /etc/init.d/ssh start
- В домашней папке нового пользователя создаем скрипт «
~/bin/remote-access.sh»#!/bin/sh
Сделаем скрипт исполняемым
screen -d -m -S remote-access -- \
sh -c 'while true; \
do ssh -R 2222:localhost:22 -C \
user_my@my.server.ru; done'$ chmod +x ~/bin/remote-access.sh
Данный скрипт создаёт фоновую сессиюscreenи устанавливает ssh-соединение с «MY». - Создаем ключ беспарольной аутентификации. Пароль (passphrase) для ключа не задается. Нужен для скрипта «
remote-access.sh»$ ssh-keygen -b 2048
Копируем ключ с «SCHOOL» на «MY»$ ssh-copy-id user_my@my.server.ru
- Добавляем задание для cron, чтобы соединение с «
MY» устанавливалось сразу после включения «SCHOOL»$ crontab -e
@reboot /home/user_school/bin/remote-access.sh
- Запустим наш скрипт на «
SCHOOL»$ /home/user_school/bin/remote-access.sh
$ screen -ls
There are screens on:
5140.remote-access (Detached)
1 Socket in /var/run/screen/S-user_school. - На стороне «
MY» должен появиться новый порт$ netstat -tln | grep :2222
tcp 0 0 127.0.0.1:2222 0.0.0.0:* LISTEN - Теперь мы можем соединиться с сервером «
SCHOOL» по созданному туннелю$ ssh -p 2222 user_school@localhost

Комментариев нет:
Отправить комментарий