Песочница →
Удаленный доступ из Windows на FreeBSD для начинающих
Однажды надо было наладить удаленный ssh-доступ на рабочей машине под Win ХР к удаленному компьютеру под управлением FreeBSD.
Отдельных мануалов работе во Фрюшке, генерации ключей в OpenSSL и т.д очень много, но подходящего для данной ситуации не нашлось, поэтому я решила свести отдельные инструкции воедино.
Далее — описание всего процесса от подготовки платцдарма до проверки работоспособности.
Сначала вся работа ведется на удаленном компьютере под Фрюшей.
У меня не было своего пользователя на удаленном компьютере, поэтому надо сначала его создать.
далее пойдут вопросы, на которые можно ответить примерно так:
После всего в терминале появится профиль пользователя с вопросом, согласны с ним или нет:
Набираю yes
На новый запрос о создания еще одного пользователя ответить no:
Для того, чтобы свежесозданный user имел право на sudo надо либо всю группу wheel прописать в файле sudoers, либо только самого пользователя.
Это делается так:
В файле /PCBSD/local/etc/sudoers раскомментировать строку
(Это означает, что теперь доступ к sudo (superuser do) открыт для всех членов группы wheel без пароля),
! Изменения в файле sudoers вступают в силу сразу же после его сохранения. Необходимо поставить на него права 440.
Теперь войдем в систему под новым пользователем:
Можно узнать, какие команды доступны этому пользователю
Можно вывести список всех групп и их членов:
Часть 2, основная. Настройка работы демона sshd.
Работать я буду с программой Openssh.
1. Настройка программы ssh
Открыть 22 порт на шлюзе.
Сначала проверим, запущен ли демон на сервере. (Демона ssh зовут sshd)
Способы:
Или
Если выведет:
значит, 22 порт слушается (по умолчанию. ssh идет через этот порт)
Если порт не слушается, значит, демон ssh не запущен.
Или же можно просто дать команду:
Если выругается, значит, надо изменить конфигурационный файл.
Тогда идем в конфигурационный файл rc.conf.local (Расположен в /etc). Если его еще нет, то создаем его и прописываем там sshd_enable = ”YES”. (Можно вместо этого такую же строку написать просто в rc.conf.)
Это нужно для того, чтобы можно было запускать демон ssh командой start. Изменения вступают в силу сразу же.
Теперь снова дадим команду запуска ssh:
Теперь снова проверить его работу, слушается ли 22 порт:
Должен вывести:
Кроме того, можно дать команду, например, соединиться с локалхостом:
Если идет ..connection refused, значит, ssh не запущен. И надо снова смотреть конфиг.
2. Генерация ключей
Даем команду сгенерировать ключи:
По умолчанию способ шифрования rsa. Чтобы сгенерировать, например, методом шифрования dsa, надо сказать
Начнется генерация пары ключей private key/public key.
Скажет:
Генерируются ключи в директории ~/.ssh (/home/shurchik/.ssh).
Теперь проверим, что там лежит:
id_rsa – это private key (может называться, например, просто rsa),
id_rsa.pub – это public key (может называться, например, rsa.pub).
Далее надо положить публичный ключ на сервер в понятном тому виде. Для этого делаем следующее:
Добавляем содержимое файла id_rsa.pub к содержимому файла authorized_keys.
Это делается командой:
Она добавляет содержимое id_rsa.pub в конец файла authorized_keys. А если его нет, то создает. cat – сокращение от слова concatenate.
Если файла authorized_keys вообще нет, то можно его создать копированием id_rsa.pub:
Проверим еще раз содержимое папки .ssh:
(Должно быть примерно следующее)
Файл authorized_keys оставляем на удаленном компьютере, а id_rsa и id_rsa.pub сохраняем куда-нибудь в другое место и удаляем из папки ~/.ssh. Важно не потерять публичный ключ, потому что в противном случае придется все генерировать заново.
И, напоследок, узнаем название хоста на удаленной машине (он нужен при подключении через ssh), после чего перейдем к рабочему компьютеру и будем мучать уже его.
Теперь узнаем ip-адрес компа:
!Note: FreeBsd7 использует способ шифрования des-, который совместим с программой Putty. А вот FreeBsd9 уже использует другой способ шифрования, который данная программа не распознает. Поэтому в такой случае придется генерировать ключи уже в самой программе putty-gen, а потом их конвертировать в вид, понятный Юниксу.
3. Преобразование закрытого ключа в формат, понятный программе Putty.
(На Windows)
Скачать программу Putty, установить ее. Принести свежесгенерированный ключ на машинку с Windows. Putty понимает ключи только одного формата (своего=) .ppk
Запустить программу Putty-gen (устанавливается одновременно с основной или по отдельности).
а. File-load private key (поскольку у меня Putty установлена именно на рабочей машинке, которой требуется именно закрытый ключ, то конвертируем его.)
б. Save private key (например, id_rsa.ppk)
1. Запустить Putty.
Настройки следующие:
Session: hostname testhost (или ip)
Logging: какие-нибудь логи, по желанию + отметить always overwrite it (или append to the end of it), чтоб не спрашивал каждый раз, перезаписывать ли логи;
Window: translation utf-8
Connection: auto-login username shurchik
SSH: browse… указать путь к файлу id_rsa.ppk (может лежать где угодно, putty абсолютно безразлично., откуда его брать.)
И теперь все сохраним:
Session: Saved sessions: new (задать имя этой сессии), нажать Save, сессия new появится в списке.
Чтобы потом ее вызвать, не настраивая все заново, после запуска Putty просто выбрать new из списка и нажать Load.
Теперь нажать Open и откроется терминал с просьбой ввести pass-фразу.
Если что-то с ключами пойдет не так, то программа, ругнувшись, запросит логин и пароль (shurchik и пароль к нему).
2. В конце можно запретить обращаться по шифрованному соединению на удаленный компьютер по логину-паролю (оставив только возможно подключения по пассфразе.)
На удаленном компьютере заходим в конфигурационный файл ssh:
/etc/ssh/sshd_config.
Там надо дописать (или раскомментировать) строку:
UsePAM no.
После чего надо перезапустить ssh:
Всё!
Отдельных мануалов работе во Фрюшке, генерации ключей в OpenSSL и т.д очень много, но подходящего для данной ситуации не нашлось, поэтому я решила свести отдельные инструкции воедино.
Далее — описание всего процесса от подготовки платцдарма до проверки работоспособности.
Часть 1, подготовительная. Создание пользователя и наделение его необходимыми правами.
Сначала вся работа ведется на удаленном компьютере под Фрюшей.
У меня не было своего пользователя на удаленном компьютере, поэтому надо сначала его создать.
% sudo adduser
далее пойдут вопросы, на которые можно ответить примерно так:
Username: shurchik
Full name:
(на него можно не отвечать, это инфа для профиля пользователя),UID (Leave empty for default):
(разрешаем системе самой выбрать свободный идентификатор, пропускаем это), Login group [shurchik]: wheel
(сюда вписываем основную группу пользователя, по умолчанию она равна имени пользователя, но для создания системного администратора лучше поместить его в группу wheel),Login group is wheel. Invite shurchik into other groups?:
(Запрос тоже можно пропустить, поскольку не надо включать этого пользователя в другие группы. Потом тоже можно обавить его в группы),Login class [default]:
(Его тоже пропускаю, но теоретически можно задать локаль – раскладку и язык пользователя, сказав russian.),Shell (sh csh tcsh bash nologin) [sh]: bash
(Это запрос о командной оболочке, можно оставить и shell, который идет по умолчанию, но более удобный bash или zsh),Home directory [/home/shurchik/]:
(Если эта домашняя директория устраивает, то нажимаю Enter, если нет – пишу другую, например, /home/test/),Home directory permissions (Leave empty for default):
(можно принудительно задать права доступа, но я оставляю все как есть по умолчании),Use password-based authentication? [yes]:
(тоже оставляю по умолчанию, поскольку иначе войти обычным способом в систему не смогу),Use an empty password? (yes/no) [no]:
(тоже оставляю по умолчанию, поскольку вход без пароля не имеет смысла),Enter password:
(ввести пароль для пользователя, но учитывать, что пароль при вводе никак не обозначается, даже звездочками),Enter password again:
(тут тоже все понятно, повторить пароль),Lock out the account after creation [no]:
После всего в терминале появится профиль пользователя с вопросом, согласны с ним или нет:
Username: shurchik
Password:******
Full name:
UID: 1010
Class:
Groups: wheel
Home directory: /home/shurchik/
Home mode:
Shell: /bin/bash
Locked: no
OK? (yes/no):
Набираю yes
Adduser: INFO: Successfully added (shurchik) to user database.
На новый запрос о создания еще одного пользователя ответить no:
Add another user? (yes/no): no
Goodbye!
Для того, чтобы свежесозданный user имел право на sudo надо либо всю группу wheel прописать в файле sudoers, либо только самого пользователя.
Это делается так:
В файле /PCBSD/local/etc/sudoers раскомментировать строку
% wheel ALL=(ALL) NOPASSWD: ALL
(Это означает, что теперь доступ к sudo (superuser do) открыт для всех членов группы wheel без пароля),
! Изменения в файле sudoers вступают в силу сразу же после его сохранения. Необходимо поставить на него права 440.
Теперь войдем в систему под новым пользователем:
% su shurchik
password:
Можно узнать, какие команды доступны этому пользователю
% sudo –l
Можно вывести список всех групп и их членов:
% less /etc/group
Часть 2, основная. Настройка работы демона sshd.
Генерация private и public key.
Работать я буду с программой Openssh.
1. Настройка программы ssh
Открыть 22 порт на шлюзе.
Сначала проверим, запущен ли демон на сервере. (Демона ssh зовут sshd)
Способы:
% ps auwx | grep sshd
Или
% sockstat -4l | grep :22
Если выведет:
sshd …tcp4 :22
значит, 22 порт слушается (по умолчанию. ssh идет через этот порт)
Если порт не слушается, значит, демон ssh не запущен.
Или же можно просто дать команду:
% sudo /etc/rc.d/sshd start
Если выругается, значит, надо изменить конфигурационный файл.
Тогда идем в конфигурационный файл rc.conf.local (Расположен в /etc). Если его еще нет, то создаем его и прописываем там sshd_enable = ”YES”. (Можно вместо этого такую же строку написать просто в rc.conf.)
Это нужно для того, чтобы можно было запускать демон ssh командой start. Изменения вступают в силу сразу же.
Теперь снова дадим команду запуска ssh:
% sudo /etc/rc.d/sshd start
должен запуститься.Теперь снова проверить его работу, слушается ли 22 порт:
% sockstat -4l | grep :22
Должен вывести:
sshd …tcp4 :22
Кроме того, можно дать команду, например, соединиться с локалхостом:
% ssh localhost
Если идет ..connection refused, значит, ssh не запущен. И надо снова смотреть конфиг.
2. Генерация ключей
Даем команду сгенерировать ключи:
% ssh-keygen
По умолчанию способ шифрования rsa. Чтобы сгенерировать, например, методом шифрования dsa, надо сказать
% ssh-keygen –t dsa
Начнется генерация пары ключей private key/public key.
Скажет:
Enter passphrase:
(лучше длинную и сложную)Генерируются ключи в директории ~/.ssh (/home/shurchik/.ssh).
Теперь проверим, что там лежит:
% ls –l ~/.ssh
id_rsa – это private key (может называться, например, просто rsa),
id_rsa.pub – это public key (может называться, например, rsa.pub).
Далее надо положить публичный ключ на сервер в понятном тому виде. Для этого делаем следующее:
Добавляем содержимое файла id_rsa.pub к содержимому файла authorized_keys.
Это делается командой:
% cat id_rsa.pub >> authorized_keys
Она добавляет содержимое id_rsa.pub в конец файла authorized_keys. А если его нет, то создает. cat – сокращение от слова concatenate.
Если файла authorized_keys вообще нет, то можно его создать копированием id_rsa.pub:
% cp id_rsa.pub authorized_keys
Проверим еще раз содержимое папки .ssh:
% ls –l ~/.ssh
(Должно быть примерно следующее)
id_rsa
id_rsa.pub
authorized_keys
Файл authorized_keys оставляем на удаленном компьютере, а id_rsa и id_rsa.pub сохраняем куда-нибудь в другое место и удаляем из папки ~/.ssh. Важно не потерять публичный ключ, потому что в противном случае придется все генерировать заново.
И, напоследок, узнаем название хоста на удаленной машине (он нужен при подключении через ssh), после чего перейдем к рабочему компьютеру и будем мучать уже его.
% hostname
testhost
Теперь узнаем ip-адрес компа:
% host testhost
!Note: FreeBsd7 использует способ шифрования des-, который совместим с программой Putty. А вот FreeBsd9 уже использует другой способ шифрования, который данная программа не распознает. Поэтому в такой случае придется генерировать ключи уже в самой программе putty-gen, а потом их конвертировать в вид, понятный Юниксу.
3. Преобразование закрытого ключа в формат, понятный программе Putty.
(На Windows)
Скачать программу Putty, установить ее. Принести свежесгенерированный ключ на машинку с Windows. Putty понимает ключи только одного формата (своего=) .ppk
Запустить программу Putty-gen (устанавливается одновременно с основной или по отдельности).
а. File-load private key (поскольку у меня Putty установлена именно на рабочей машинке, которой требуется именно закрытый ключ, то конвертируем его.)
б. Save private key (например, id_rsa.ppk)
Часть 3, торжественная. Настройка Putty и установление шифрованного удаленного соединения.
1. Запустить Putty.
Настройки следующие:
Session: hostname testhost (или ip)
Logging: какие-нибудь логи, по желанию + отметить always overwrite it (или append to the end of it), чтоб не спрашивал каждый раз, перезаписывать ли логи;
Window: translation utf-8
Connection: auto-login username shurchik
SSH: browse… указать путь к файлу id_rsa.ppk (может лежать где угодно, putty абсолютно безразлично., откуда его брать.)
И теперь все сохраним:
Session: Saved sessions: new (задать имя этой сессии), нажать Save, сессия new появится в списке.
Чтобы потом ее вызвать, не настраивая все заново, после запуска Putty просто выбрать new из списка и нажать Load.
Теперь нажать Open и откроется терминал с просьбой ввести pass-фразу.
Если что-то с ключами пойдет не так, то программа, ругнувшись, запросит логин и пароль (shurchik и пароль к нему).
2. В конце можно запретить обращаться по шифрованному соединению на удаленный компьютер по логину-паролю (оставив только возможно подключения по пассфразе.)
На удаленном компьютере заходим в конфигурационный файл ssh:
/etc/ssh/sshd_config.
Там надо дописать (или раскомментировать) строку:
UsePAM no.
После чего надо перезапустить ssh:
% sudo /etc/rc.d/sshd stop
% sudo /etc/rc.d/sshd start
Всё!
08.09.2011 21:24+0400