Готовимся к удалённому управлению классомРано или поздно администратору школьного компьютерного класса приходит мысль об
удалённом управлении.
Бегать с флешкой по классу можно, но долго. Гораздо удобнее сделать так, чтобы учитель мог подключаться к любому компьютеру класса по
SSH прямо со своего места.
Что мы получим в итоге:- Учитель сможет подключаться к ученическим компьютерам по SSH
без пароля (по ключам)
- Настройка безопасная: парольный вход для root запрещён, только ключи
- Всё делается за один обход класса с флешкой. Один раз таки придётся
- После настройки у вас останется список обработанных компьютеров - никого не пропустите
Скрипт будет работать в двух режимах:
Режим 1 - "Подготовка флешки" (запускается на компьютере учителя от обычного пользователя)- Проверяет, есть ли у учителя SSH-ключ (алгоритм ed25519)
- Если нет - создаёт новый (без парольной фразы)
- Копирует
публичную часть ключа на флешку
Режим 2 - "Настройка ученического ПК" (запускается на каждом ученическом компьютере от root)- Берёт ключ с флешки
- Добавляет его в
authorized_keys для root
- Разрешает в SSH доступ root'у по ключам (
PermitRootLogin prohibit-password)
- Перезапускает SSH
- Записывает имя компьютера в чек-лист (чтобы учитель видел, какие ПК уже обработаны)
Нам понадобится1.
Флешка2.
Компьютер учителя (с которого будете подключаться)
3.
Все ученические компьютеры (обходим по очереди с флешкой)
Шаг 1. Создаём скрипт на флешкеНа вашей флешке создайте новый текстовый файл и назовите его
setup_access.sh.
Отступление про окончания строк! Если вы создаёте файл скрипта в Windows (в Блокноте), перед запуском нужно будет исправить окончания строк "под линукс", иначе он не сработает. Я рекомендую один из двух способов:
- Установить утилиту
dos2unix (есть в репозитории Альт) и выполнить
dos2unix setup_access.sh- Или открыть файл в редакторе Mousepad, выбрать в меню "Документ" - "Завершение строк" - "Unix (LF)" и сохранить.
Ещё лучше: создавайте скрипты сразу в Linux (в любом текстовом редакторе) - тогда проблем с окончаниями не будет вообще.
Продолжаем. Откройте файл в текстовом редакторе и вставьте туда вот этот код:
#!/bin/bash
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
KEY_NAME="id_ed25519.pub"
KEY_ON_FLASH="$SCRIPT_DIR/$KEY_NAME"
echo "=== МАСТЕР НАСТРОЙКИ ДОСТУПА SSH ==="
echo "Выберите режим работы:"
echo "1) ПОДГОТОВИТЬ ЭТУ ФЛЕШКУ (запускать на компьютере УЧИТЕЛЯ от ОБЫЧНОГО пользователя)"
echo "2) НАСТРОИТЬ ЭТОТ УЧЕНИЧЕСКИЙ КОМПЬЮТЕР (запускать на каждом ПК от root)"
echo "------------------------------------"
read -p "Введите цифру (1 или 2): " MODE
case $MODE in
1)
# РЕЖИМ УЧИТЕЛЯ: Генерируем и копируем ключ на флешку
if [ "$EUID" -eq 0 ]; then
echo "❌ ОШИБКА: Режим 1 должен запускаться от ОБЫЧНОГО пользователя, а не от root!"
echo "Выйдите из root (команда exit) и запустите скрипт снова."
exit 1
fi
echo "Режим: ПОДГОТОВКА ФЛЕШКИ..."
# Если в системе учителя ключа нет - создаем
if [ ! -f "$HOME/.ssh/id_ed25519" ]; then
echo "Ключ не найден. Создаю новый для этого ПК..."
mkdir -p "$HOME/.ssh"
chmod 700 "$HOME/.ssh"
ssh-keygen -t ed25519 -N "" -f "$HOME/.ssh/id_ed25519"
echo "✅ Ключ создан"
else
echo "✅ Ключ уже существует"
fi
# Копируем публичный ключ на флешку рядом со скриптом
cp "$HOME/.ssh/$KEY_NAME" "$KEY_ON_FLASH"
echo "✅ Файл $KEY_NAME скопирован на флешку."
echo ""
echo "Теперь эту флешку можно нести на ученические компьютеры."
echo "На каждом ученическом ПК запустите этот же скрипт и выберите режим 2."
;;
2)
# РЕЖИМ КОМПЬЮТЕРА УЧЕНИКА: Настраиваем доступ
echo "Режим: НАСТРОЙКА УЧЕНИЧЕСКОГО ПК..."
# Проверка root (нужен для правки /etc/ и /root/)
if [ "$EUID" -ne 0 ]; then
echo "❌ ОШИБКА: Запустите скрипт от root (через su -)"
exit 1
fi
# Проверка: есть ли вообще ключ на флешке?
if [ ! -f "$KEY_ON_FLASH" ]; then
echo "❌ ОШИБКА: На флешке нет файла $KEY_NAME!"
echo "Сначала запустите этот скрипт на компьютере учителя (режим 1)."
exit 1
fi
# 1. Создаём папку .ssh для root, если нет
mkdir -p /root/.ssh
chmod 700 /root/.ssh
# 2. Добавляем ключ, если его ещё нет
if ! grep -qf "$KEY_ON_FLASH" /root/.ssh/authorized_keys 2>/dev/null; then
cat "$KEY_ON_FLASH" >> /root/.ssh/authorized_keys
echo "✅ Ключ добавлен в /root/.ssh/authorized_keys"
else
echo "⏩ Ключ уже есть в authorized_keys, пропускаем"
fi
chmod 600 /root/.ssh/authorized_keys
# 3. Делаем бэкап конфига SSH
cp /etc/openssh/sshd_config /etc/openssh/sshd_config.bak.$(date +%Y%m%d)
# 4. Разрешаем root-доступ по ключам (без пароля)
sed -i 's/^#*PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/openssh/sshd_config
echo "✅ Настройки SSH обновлены"
# 5. Включаем автозагрузку SSH и запускаем
systemctl enable sshd
systemctl restart sshd
echo "✅ Служба SSH добавлена в автозагрузку и запущена"
# 6. Запись в чек-лист (просто имя компьютера для контроля)
echo "$(hostname)" >> "$SCRIPT_DIR/checked_pcs.txt"
echo "✅ Компьютер $(hostname) добавлен в список"
echo ""
echo "==================== ГОТОВО ===================="
echo "Теперь учитель может подключиться к этому ПК:"
echo " ssh root@$(hostname)"
echo " или (если не работает DNS) по IP:"
echo " ssh root@$(ip route get 1 | awk '{print $7}' | head -1)"
echo "================================================"
;;
*)
echo "❌ Отмена. Введено неверное значение."
exit 1
;;
esacСохраните файл.
Шаг 2. Запускаем режим 1 на компьютере учителяВажно: Режим 1 должен запускаться от
обычного пользователя, а не от root!
1. Если предполагаете исправлять окончания строк с помощью
dos2unix, а она ещё не установлена (и файл создавался в Windows), можно сейчас установить её её от root. Если она не нужна или уже есть - пропускаем.
su -# apt-get update && apt-get install dos2unix
# exit2. Вставьте флешку и перейдите в её папку уже под своей обычной учёткой:
cd /run/media/ пока не нажимаем Enter- нажмите Tab - автодополнение подставит имя
- нажмите Tab ещё - подставит имя флешки
- нажмите Enter - есть, мы перешли в корень флешки
3. Если нужно, на этом этапе можно исправить окончания строк в файле скрипта (если не требуется - пропускаем):
dos2unix setup_access.sh4. Запустите скрипт. Мы выполняем его от вашей обычной учётной записи.
sh setup_access.sh5. Выберите режим
1 (Подготовить эту флешку).
Скрипт проверит наличие SSH-ключа в папке
~/.ssh/id_ed25519. Если ключа нет - создаст его. Затем скопирует публичный ключ на флешку.
Вы увидите примерно такое сообщение:
=== МАСТЕР НАСТРОЙКИ ДОСТУПА SSH ===
Выберите режим работы:
1) ПОДГОТОВИТЬ ЭТУ ФЛЕШКУ (запускать на компьютере УЧИТЕЛЯ от ОБЫЧНОГО пользователя)
2) НАСТРОИТЬ ЭТОТ УЧЕНИЧЕСКИЙ КОМПЬЮТЕР (запускать на каждом ПК от root)
------------------------------------
Введите цифру (1 или 2): 1
Режим: ПОДГОТОВКА ФЛЕШКИ...
✅ Ключ уже существует
✅ Файл id_ed25519.pub скопирован на флешку.
Теперь эту флешку можно нести на ученические компьютеры.
На каждом ученическом ПК запустите этот же скрипт и выберите режим 2.Флешка готова! Теперь на ней лежит:
- сам скрипт
setup_access.sh- публичный ключ
id_ed25519.pub- (позже появится файл
checked_pcs.txt со списком обработанных компьютеров)
Шаг 3. Обходим ученические компьютеры (режим 2)На
каждом ученическом ПК:
1. Вставляем флешку.
2. Открываем терминал.
3. Переходим в root:
su - (вводим пароль администратора)
Команду на разрешение подключаться к компьютеру должен дать сам root, поэтому от него и выполняется скрипт на целевом компьютере.
4. Переходим в папку с флешкой (снова используйте Tab):
# cd /run/media/ не жмём Enter- Tab
- Tab
- Enter - есть.
5. Запускаем скрипт:
# sh setup_access.sh6. Выбираем режим
2 (Настроить этот ученический компьютер).
Скрипт:
- проверит, есть ли ключ на флешке
- добавит ключ в
authorized_keys для root
- сделает бэкап конфига SSH
- пропишет
PermitRootLogin prohibit-password- перезапустит SSH
- запишет имя компьютера в файл
checked_pcs.txt на флешке
Вы увидите примерно такой вывод:
=== МАСТЕР НАСТРОЙКИ ДОСТУПА SSH ===
Выберите режим работы:
1) ПОДГОТОВИТЬ ЭТУ ФЛЕШКУ (запускать на компьютере УЧИТЕЛЯ от ОБЫЧНОГО пользователя)
2) НАСТРОИТЬ ЭТОТ УЧЕНИЧЕСКИЙ КОМПЬЮТЕР (запускать на каждом ПК от root)
------------------------------------
Введите цифру (1 или 2): 2
Режим: НАСТРОЙКА УЧЕНИЧЕСКОГО ПК...
✅ Ключ добавлен в /root/.ssh/authorized_keys
✅ Настройки SSH обновлены
✅ Служба SSH перезапущена
✅ Компьютер pc-21 добавлен в список
==================== ГОТОВО ====================
Теперь учитель может подключиться к этому ПК:
ssh root@pc-21
или (если не работает DNS) по IP:
ssh root@192.168.1.22
================================================Повторяем эту процедуру на
всех ученических компьютерах.
Шаг 4. Проверяем, никого не пропустилиНа флешке появился файл
checked_pcs.txt. Откройте его в любом текстовом редакторе - там построчно перечислены имена всех обработанных ПК.
Сверившись со своим списком (или просто вспомнив, сколько у вас компьютеров), вы легко увидите, не пропустили ли кого-то.
Если какой-то компьютер пропущен - можно вернуться и доделать.
Шаг 5. Проверяем. Пробуем подключиться с учительского компьютераТеперь вернёмся на учительский компьютер и проверим, как работает доступ.
1. Откройте терминал
на учительском компьютере (под своей обычной учёткой).
2. Попробуйте подключиться к одному из ученических ПК:
ssh root@pc-21 (вместо
pc-21 подставьте реальное имя или IP компьютера)
Если всё настроено правильно, вы сразу окажетесь в системе ученического компьютера
без запроса пароля.
Важное дополнение для пользователей WindowsВесь описанный выше процесс рассчитан на то, что учитель работает в Linux (в частности, в Альт Образование). Но если у вас на рабочем компьютере стоит Windows - это не проблема!

Начиная с Windows 10, в системе есть встроенный клиент OpenSSH. Это значит, что вы можете:
1. Открыть командную строку (или PowerShell) и сгенерировать SSH-ключ точно такой же командой, как в Linux:
ssh-keygen -t ed25519 -N "" -f "%USERPROFILE%\.ssh\id_ed25519"(можно просто выполнить в командной строке
ssh-keygen без аргументов - и протыкать Enter на все вопросы)
2. Найти созданный публичный ключ в папке
C:\Users\ВашеИмя\.ssh\id_ed25519.pub и скопировать его на флешку.
3. Дальше действовать по вышеописанному: взять флешку, обойти ученические компьютеры, запустить на них режим 2 нашего скрипта
setup_access.sh. Ключ с флешки будет добавлен, SSH настроен, и вы сможете подключаться к ученическим ПК
прямо из Windows.
Никакой магии - OpenSSH в Windows работает с теми же ключами, что и в Linux. Так что можете смело пользоваться, и даже без PuTTY.
Как всё это устроено-
SSH-ключи - это безопасный способ аутентификации. Вместо пароля используется пара ключей: приватный (хранится у учителя) и публичный (кладётся на ученические ПК).
- Мы использовали алгоритм
ed25519 - современный, быстрый и надёжный.
- Параметр
PermitRootLogin prohibit-password в конфиге SSH означает: root может заходить по SSH
только с ключом, парольный вход запрещён.
- Файл
checked_pcs.txt - просто текстовый лог, куда скрипт записывает имена обработанных компьютеров. Никакой другой роли он не играет.
Я потерял/удалил ключ на учительском компьютере- Просто запустите режим 1 снова - скрипт создаст новый ключ. Но учтите: на всех ученических ПК, которые вы уже настроили, нужно будет
заменить ключ (старый перестанет работать).
Кстати
Если ранее использовали мои решения из предыдущих тем, то на флешке уже шесть скриптов:
-
archive_profile.sh и
deploy.sh - для "замороженного" профиля ученика
-
guest_cleanup.sh - для очистки мусора от гостевых сеансов
-
samba_teacher.sh - для настройки сетевых папок учителя
-
student_autofs.sh - для настройки ученических компьютеров (подключение к папкам учителя)
-
setup_access.sh - для настройки SSH-доступа к ученическим ПК
Дальше предполагаю дать готовый способ использовать SSH для целевого массового запуска скриптов на ученических компьютерах. Опять же "всё в одном файле, запустил и всё само сделалось".
Скрипт делался для
Альт Образование 11.1 (XFCE). Если используете другие дистрибутивы и версии - возможно, потребуется адаптация (например, путь к конфигу SSH, я не проверял).
upd: Исправил скрипт. На большинстве ученических компьютеров sshd изначально не стоит в автозапуске. Теперь скрипт включает его автозагрузку.