Вызвался настроить школьный сервер своему другу. В сельскую школу, где он работает, в рамках общероссийской программы провели интернет и там встал вопрос, как проконтролировать сетевую активность новоявленных интернет-пользователей (в лице школьников). Заодно привести в порядок локальную сеть школы.
Под сервер оперативно выделили компьютер. В выборе операционной системы остановились на 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
Комментариев нет:
Отправить комментарий