Школьный сервер через ssh

Изображение пользователя Школяр.

Автор: Владимир Волков


Практически все необходимые для администрирования школьного сервера функции выполняются через веб-интерфейс. Но в некоторых случаях (например, как в случае с установкой какой-то своей CMS или LMS) необходимо выполнить ряд действий непосредственно из shell.
Если сервер это компьютер, который стоит под рукой, и к нему подключены клавиатура и монитор, то проблем нет, всегда можно войти в обычный shell. Но если сервер установлен "как надо", то есть вдали от всех людей, и монитор от него отключен, а клавиатура старательно скрыта от глаз, то встает вопрос о доступе к серверу через ssh.
Сделать это очень просто, как говорится, в три приема.

Создание ключа

На том компьютере (назовем его клиентским), с которого вы хотите получить доступ на сервер, и под той учетной записью на клиентском компьютере, из-под которой вы хотите осуществлять администрирование, нужно создать пару ключей RSA. Для этого нужно на клиентском компьютере запустить Konsole, и выполнить команду ssh-keygen:

В ходе выполнения программы ssh-keygen вам будут заданы вопросы:
Enter file in which to save the key (/home/shkoliar/.ssh/id_rsa) - Введите полное имя файла, в котором будет сохранен ключ. Как видите, по умолчанию программа предлагает сохранить ключ в домашнем каталоге, в скрытой папке /.ssh - пусть там и сохраняет.
Второй вопрос: Enter passphrase (empty for no passphrase) - Введите пароль, если пароль не нужен, нажмите Enter. Это место нуждается в пояснении. Пароль, по большому счету, тут не нужен вообще. Но если вы оставляете свое рабочее место, и опасаетесь, что за то время, пока вы отсутствуете, кто-то может из вашей учетной записи запустить ssh и поадминить Школьный Сервер - в этом случае вы можете защитить ssh-авторизацию дополнительным паролем, который нужно будет вводить при установлении ssh-соединения.
После того, как вы введете дважды, или вообще не введете пароль, программа ssh-keygen создаст пару ключей. Один из этих ключей является приватным, и должен оставаться там, где был создан, а вот второй ключ, публичный, вам надо извлечь из скрытой папки. Лучше всего скопировать файл id_rsa.pub на рабочий стол. На этом создание ключа можно считать завершенным.

Настройка сервера

Для того, чтобы настроить сервер для работы по ssh, нужно запустить веб-интерфейс к системе управления сервером. Предположим, что NAME это имя или ip-адрес компьютера, на котором находится сервер. С клиентской машины нужно в строке браузера набрать https://NAME:8080. На экран будет выведено окно инструмента настройки сервера.
В этом окне слева щелкните на пункте Сеть - Брандмауэр. У меня по непонятной причине на экран было выведено окно с независимыми пунктами выбора, в которых не был установлен ни один флажок. ВНИМАНИЕ: минимум флажков, которые вы должны установить, показан на рисунке ниже.

Если вы установите только флажок ssh, то после щелчка на кнопке Применить у вас и будет работать только ssh, а все остальное работать перестанет, и веб-интерфейс "отвалится". Ну и, естественно, все службы сервера, к которым вы планируете обращаться извне, тоже нужно пометить флажками, и щелкнуть на кнопке Применить.
Теперь нужно "скормить" серверу ваш публичный ключ. Для этого слева щелкните на пункте Пользователи - Администратор системы. Найдите справа поле Положить публичный ключ для входа через ssh, и щелкните на кнопке Обзор. Найдите на своем рабочем столе файл id_rsa.pub, выберите его, и затем щелкните на кнопке Положить. Под этой кнопкой появятся сведения о положенном вами ключе. Настройка сервера завершена.

Вход на сервер через ssh

Это происходит просто: запускаете Konsole, набираете в командной строке:
ssh root@NAME -C
и оказываетесь в shell сервера с административной учетной записью. Думаю, вы не забыли, что NAME это имя или ip-адрес сервера. Ключ командной строки обеспечивает сжатие данных на лету, если все происходит в высокоскоростной локальной сети, этот ключ вам может не понадобиться. Вы можете добавить простых пользователей на сервер, и входить с их учетной записью. Только вот оно вам нужно?

Изображение пользователя derugu.

Два сервера с паблик кей

Понадобилось на два сервера одновременно ходить с public key, попробовал второму серверу "скормить" старый ключ - ругается. Что делать, новый генерить?

Изображение пользователя derugu.

Решено. Два сервера с паблик кей

Скормил второму серверу тот-же ключ, удалил из .ssh/known_host строчку об новом сервере(наверное, от старых попыток осталось) и зашёл. Может, это и не правильно, но это не ко мне, раз работает на новой, пахнущей свежей краской машине с ШС4.1, значит, так надо, так задумали разработчики. Главное, что и меня это устраивает. :)

Изображение пользователя Школяр.

Думаю, что как раз это и хорошо

что вас устраивает. А как это ПРАВИЛЬНО, это уже вопрос идеологии безопасности, которая не всегда совпадает с практикой :))

Изображение пользователя derugu.

О статье.

Скопировал статью себе на комп. А то получается, что она идеологически вредная. Ненароком пропадёт куда... И появится вместо неё

man ssh
ssh -help

Ну ничего с собой не могу поделать, последнее время хожу за советом на этот сайт и предпочитаю читать советы уважаемого Школяра. Потому, что помогают, потому, что с юмором... И Атмосфера с большой буквы А - добрая. Спасибо.

Изображение пользователя derugu.

SSH для 5.0

В 4.1 Этот способ работал всегда, а в пятом ШС пишет
ssh: Permission denied, please try again.
:(((

Изображение пользователя Школяр.

поясните

что вы имеете в виду... вроде я только на днях сервер поднимал 5-й, никаких пермишнов, никаких денайедов...

Изображение пользователя derugu.

SSH 5.0

Сам не понимаю, сгенерил ключ, зашёл фоксом на страницу сервера, Пользователи->Администратор и положил ключ. Даже перезагрузил ШС, и всё равно не пускают по shh!!! Может, это связано с тем, что у меня на ШС50 пока одна сетевушка 192.168.0.3 , она же локальная и внешняя.

Изображение пользователя Школяр.

Короче...

безопасность, блин...
команда ssh root@адрес_сервера
в ответ на запрос пароля - вводите пароль, который
задали при генерации ключа
И заходите на сервер рутом

Изображение пользователя derugu.

Пароль при генерации ключа

[filin@GimnTerminal ~]$ ssh root@192.168.0.3
root@192.168.0.3's password:
ssh: Permission denied, please try again.

Пароль при генерации указал. Ключ на ШС5 положил. При входе его ввел. :((( Не пущаеть, бяка.

Изображение пользователя Школяр.

всю ситуацию воспроизвел только что

на самом деле - без пароля что-то не пускал
но... вы пробовали вводить не тот пароль, что вводили при генерации ключа, а тот, который вводили для рута на сервере?
у меня они одинаковые, поэтому разницы нет...

Изображение пользователя derugu.

Дас ист фантастиш! Работает!

На предложение создать ключ и указать имя файла я указал mykey и его потом пытался подложить ШС50, а НАДО из ~/.ssh id_rsa.pub скармливать.

>Enter file in which to save the key (/home/shkoliar/.ssh/id_rsa) - Введите полное имя файла, в >котором будет сохранен ключ. Как видите, по умолчанию программа предлагает сохранить ключ в домашнем >каталоге, в скрытой папке /.ssh - пусть там и сохраняет.

А у меня уже есть такой ключ для 4.1 сервера, вот я и подумал переименовать ключ, а то вдруг старый затрётся - не прокатило. Надо с именем id_rsa, т.е. по-умолчанию и скопировать в другой каталог.

А зачем тогда предлагать изменить имя?!!!! Типа "вы имя ключу давайте любое, но работать буду только с id_rsa". Вот коварная железяка!!! Как моя ученица называет серверную службу ejudge "Шайтан-машина".
:)

вообще-то должно быть все равно

Ключ переданный на сервер просто копируется в authorized_keys
точнее в /etc/openssh/authorized_keys/root - посмотрите, что там за ключ валяется?

Изображение пользователя Школяр.

Этот ключ

у вас должен лежать в ~/.ssh
обе пары, и паблик, и не паблик на клиентской стороне

Где логи

общения с сервером?
Скопируйте сюда команду и ответ сервера.

Изображение пользователя derugu.

Логи ssh

[filin@GimnTerminal ~]$ ssh root@192.168.0.3
root@192.168.0.3's password:
ssh: Permission denied, please try again.
root@192.168.0.3's password:

PS Пароль правильный, 17 раз проверял

а вот как БЕЗ ПАРОЛЯ с установленным ключом отвечает 4.1
[filin@GimnTerminal ~]$ ssh root@192.168.0.2
Last login: Sun Dec 20 18:23:54 2009 from 192.168.0.1
[root@localhost ~]#

И ещё, может кто знает... Как установить доступным репозиторий
ftp://ftp.altlinux.org/pub/distributions/ALTLinux/p5/branch/files/i586/R...

А то пришлось вручную вбивать пакеты
apt-get install ftp://ftp.altlinux.org/pub/distributions/ALTLinux/p5/branch/files/i586/R...
и ещё две библиотеки по зависимостям.

Единственное, что приходит в голову

Проверьте права доступа на файл authorized_keys. Лучше в таком же виде - запрос-ответ
При правильном ключе пароль не должен запрашиваться.
И еще рута по паролю не пустит ни при каких условиях (если не поменять настройки sshd).

Изображение пользователя Школяр.

Раз вы на сервер рутом попали

то просто раскоментируйте /etc/apt/sources.list/alt.list

Изображение пользователя derugu.

Пробовал уже раскомментировать...Увы

Но я уже и так установил нужные пакеты... Возможно это из-за шлюза, а подопытный ШС5.0 пока только с одной сетевой картой в локальной сети, может ему ДНС на шлюз указать надо, это пока неясно. Когда установлю вторую сетевушку, настрою внешний и внутренний интерфейсы, понятно будет.

Вопрос пока снимается. Надо доразобраться, а то условия некорректные для Ш5-сервера

Изображение пользователя Школяр.

Однако так оно и есть

на самом деле не пускает. Не разбирался, некогда сейчас :((

под rootom и не получится

Под rootom и не получится. А что мешает создать пользователя в вебморде включить его в группы wheel ldap root ip и рулить оттуда. По умолчанию подключение ssh рутом запрещено из соображений безопасности, как я думаю.

Изображение пользователя Школяр.

Кстати, насчет вебморды

только что в 5 сервере через веб-интерфейс пользователь у меня не создался. То есть как бы создался, но в списке не появился. В общем, что-то там загадочное происходит, надо поразбираться

создание пользователей

Перед созданием пользователя проверте включен ли LDAP, сначала вводится имя пользователя - кнопка создать, потом пароль и т.д. - сохранить. Кстати первый созданный пользователь, если запустить почтовый сервер, получает по почте все системные сообщения. Почитал по поводу серверной безопасности вот здесь много интересного нашёл http://www.savahost.com/art_server/server1.php

Изображение пользователя derugu.

>пользователь у меня не создался.

И у меня... Хотя в системе он есть. Просто в Вебморде не проявляется в списке юзеров.

создание пользователя

Для того чтобы пользователи создавались правильно, при установке сервера нужно указать домен отличный от localhost . Например school.localhost иначе LDAP коректно работать не будет

Изображение пользователя derugu.

"под rootom и не получится"

А на практике - получилось. Если нельзя, но о-о-очень хочется, то можно. По всей видимости, Линукс - это русская разработка. У нас в России суровость законов смягчается необязательностью их исполнения, так и c ssh рутовым.

Да, это русская привычка...

вместо решения искать костыль! ССЗБ. :(

Изображение пользователя derugu.

ССЗБ - это не про нас.

:(
И это, ну, значит... Раз в веб-интерфейсе администратора есть механизм доверенного ключа, странно его называть костылём.

Изображение пользователя Школяр.

Костыль-не костыль

однако, почему ж мы все-таки не перестраивая ssh, попали рутом на сервер?

Нужна полная картина

А то сначала один файл исправят, потом другой, потом забудут... потом руьом зайдут, а потом сайт ляжет или еще какая дрянь приключится.
Надо все конфиги ссх и около проверить.