Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Security —> FreeBSD & DSA

Элементарная настройка авторизации по DSA ключу на FreeBSD

Автор: stup.


Для того, чтобы настроить аутенфикацию по DSA ключу достаточно воспользоваться утилитой Puttygen, где в опциях указать DSA шифрование. Потом генерируем ключ при этом лихорадочно передвигая курсор мыши по desktop'u. До того как поместим ключ на сервер под управлением FreeBSD не закрываем утилиту Puttygen. После того как ключ сгенерировался его нужно защитить паролем, что мы собственно и делаем вводя его в соответствующих полях. Затем сохраняем на компьютере "Private Key" и прячем  его куда-нибудь подальше, но обязательно запоминаем где он хранится. Сам же ключ я просто выделил и скопировал в буфер, потом на FreeBSD создал директорию в своем домашнем каталоге под названием .ssh:
mihail@gella~$mkdir .ssh

В этой директории создаем файл authorized_keys:
mihail@gella~/.ssh$vim authorized_keys

в который собственно и скопируем наш ключ из буфера обмена. Вот порядок последовательности действий после того как вы набрали команду:
vim authorized_keys

(Открылся редактор далее нажимаем кнопку "i" и переходим в режим вставки текста, потом нажимаем просто правой кнопкой мышки и текст с ключом из буфера должен оказаться на экране редактора. Очень внимательно проследите чтобы ключ скопировался полностью. После этих действий нажимаем одновременно комбинацию клавишей "shift" ":" пишим символы "wq" и сохранив изменения выйдем из редактора).
На директорию .ssh и файл authorized_keys обязательно выставить права 0600.
chown mihail:mihail authorized_keys

потом команда:
chmod 0600 authorized_keys

Далее мы в Windows ставим такую замечательную утилиту как Pageant. Она сразу же появится в системном трэе. Нажимаем правой кнопки мыши в трэе по иконке агента и выбираем опцию Add Key. Добавляем наш Private Key, сразу же всплывет окошко для ввода пароля которым мы защитили наш Private Key разумеется введем пароль. Затем запускаем Putty где, создаем если не создана сессию, называем ее как хотим естественно указываем протокол SSH, и порт 22 который используется по умолчанию. В секции Connection=>Data=>Login details указываем имя вашего пользователя, а в секции SSH=>Auth=>Private key file for authentication указываем путь до вашего Private Key. Cобственно после этих действий все даже с настройками по умолчанию должно работать.

Итак после того как мы настроили аутенфикацию по ключу, есть еще несколько интересных ключевых моментов, это касается собственно передачи файлов с удаленного компьютера на сервер и обратно.

Передача файлов осуществляется с помощью утилиты pscp (Putty SCP). Для того чтобы настроить работу pscp из командной строки или файлового менеджера, надо в переменных средах windows в разделе Системные переменные отредактировать переменную path и добавить туда путь до каталога в котором находится pscp. В этом случае мы получим возможность набрав команду pscp в командной строке работать с утилитой pscp.

Кроме всего прочего имеется определнный синтаксис использования данной утилиты.
Я опишу лишь основные моменты с которыми сталкивался.

Параметр -p означает, то что у файла будут унаследованы те атрибуты которые у него были в Windows.

Параметр -r Это рекурсивная копия целых директорий, очень удобно когда необходимо закачать например какой-либо скрипт.

Вот элементарный пример использования:

pscp c:\ssh\pscp.exe user_name@Name_server:/root

где "c:\ssh\pscp.exe" - путь до файла который хотим передать.

где "user_name@server_name" - user_name это имя системного пользователя необходимо чтобы у пользователя были права на передачу файлов по pscp, а server_name это имя сервера на который мы хотим передать файл. лично я предпочитаю указывать имя сервера по его IP адресу

где "/root" - это имя каталога в который мы хотим передать файл.

Обратная ситуация, это когда мы хотим скопировать файл например какой-либо конфигурационный файл с машины на которой стоит FreeBSD. Тогда синтаксис будет выглядеть следующим образом:

pscp user_name@server_name:/root/.bashrc c:\home

где "user_name@server_name" - user_name это имя системного пользователя (необходимо чтобы у пользователя были права на передачу файлов по pscp), а server_name это имя сервера на который мы хотим передать файл. (лично я предпочитаю указывать имя сервера по его IP адресу)

где "/root/.bashrc" - имя директории и собственно сам файл который мы хотим скопировать на Windows.

где "c:\home" - имя директории в которую мы хотим скопировать уже на Windows.

С помощью таких нехитрых манипуляций мы имеем возможность передавать файлы с FreeBSD на Windows и обратно. Вся авторизация у меня работает в автоматическом режиме по DSA ключу.

Так же если у вас все работает в связке в такими утилитами как Putty, Pscp, Pagent, то синтаксис может быть еще проще так как просто можно будет указывать имя настроенной сессии в Putty. Например это будет выглядеть так:

pscp c:\ssh\putty.exe @session_name:/root

pscp @session_name:/root/.bashrc c:\home

Так как стоит Pageant он авторизует нашу сессию по ключу, то достаточно просто указывать имя сессии, а все параметры и настройки из Putty берутся автоматически, то есть по большому счету нужно лишь грамотно настроить Putty.


Ну и несколько маленьких советов:

Для того чтобы Pageant постоянно работал создайте его ярлык в автозагрузке а в свойствах ярлыка пропишите путь до файла pagent.exe а далее через пробел пути до ваших ключей. Например "C:\ssh\pageant.exe D:\ssh\You_Key.ppk

Ну а если вы используете несколько сессий, а вам не хочется всякий раз запускать Putty и выбирать там сессию, то достаточно создать ярлык Putty, а в свойствах ярлыка указать путь до файла putty.exe, а потом через пробел "-load session_name" (разумеется без ковычек). Например C:\ssh\putty.exe -load session_name

Все программное обеспечение взято c этого сайта

Ну вот собственно и все.



размещено: 2006-06-20,
последнее обновление: 2006-07-01,
автор: stup


vanish, 2006-07-19 в 13:39:16

Хорошая статья.
5 баллов
все пашет на ура.

zyxman, 2006-07-26 в 21:45:59

Название не совсем точно отражает суть статьи.
1. надо название изменить чтобы было понятно что речь именно про FreeBSD + putty + openssh!!
2. authorized_keys можно делать читабельным для всех: самое страшное что с ним может сделать хакер - открыть тому у кого спер ключ доступ к собственному серверу (серверу хакера) :)
хотя конечно _теоритически_ у хакера может быть суперкомпьютер, а вы не собираетесь менять ключи в ближайшие сотни лет..
Собственно главная прелесть подхода что очень легко менять ключи и не нужно кучу паролей.
3. я бы еще добавил про особенность openssh на других системах (проверялось на линухе): используется два отдельных файла для public ключей - один для SSH протокола версии 1 (authorized_keys), другой для версии 2 (authorized_keys2).
То есть мы конечно пользуемся более секюрной версией 2 и соответственно ключ нужно писать именно в authorized_keys2.

alexander, 2006-11-11 в 8:44:22

to zyxman:

а я вот внимательно прочитав ман уверяю: .ssh должен быть доступен только владельцу, иначе ssh использовать его откажется.

schizoid, 2007-04-06 в 18:01:07

А если я вендой не пользуюсь? И соответствкнно путти? ;)
тада поступаем так:

В /etc/ssh/sshd_config проверяем активна ли опция "PubkeyAuthentication yes".
Запускаем на локальной машине программу ssh-keygen (ssh-keygen -t rsa),
на все задаваемые вопросы принимаем значения по умолчанию (поле passphrase оставляем пустым).
Далее, запускаем программу ssh-copy-id -i ~/.ssh/id_rsa.pub user@remotehost, где
  user - пользователь удаленной машины
  remotehost - адрес удаленной машины,
( или вручную, на удаленной машине в директории ~/.ssh, создаем файл authorized_keys,
куда копируем содержимое файла identity.pub (id_rsa.pub) с локальной машины).
Для увеличения безопасности в файл ~/.ssh/authorized_keys на удаленной машине
добавляем перед ключом (разделив пробелом) строку:
   from="localhost", где localhost - адрес локальной машины (from="localhost" 1024 23 1343.....).

None, 2007-04-29 в 7:56:37

"Thanks for interesting site. Keep up a great work."

arez, 2007-10-23 в 11:11:39

Снять коментарии в файле /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

соэдать симлинк для authorized_keys
ln authorized_keys authorized_keys2

для .ssh chmod установить 0700
для authorized_keys установить 0600
для authorized_keys2 установить 0600

arez, 2007-10-23 в 11:13:38

to schizoid

from="*.example.org,192.0.2.*,::ffff:192.0.2.*" ssh-rsa AAAAB…

J4ck, 2007-11-12 в 11:32:04

>> pscp
Под виндой существует удобный плагин для FARа - winscp. Позволяет работать с файлами через ssh в удобной оболочке.

Goga, 2008-02-08 в 13:40:41

Рассказанный в статье способ у меня почему-то не заработал. Пришлось сгенерить ключ с помощью ssh-keygen, а Puttygen подсунуть сгенерённый приватный ключ, чтоб он его переконвертил в свой формат ppk. Так заработало. Видимо "неправильные" ключи генерит Puttygen.

Он, 2008-12-07 в 21:47:24

Ничего не пашет

александр, 2008-12-08 в 9:51:27

все пашет. Проверь права файлов на все ключи и папки. Должны иметь разрешение только для владельца. Проверь, что открытый ключ туда положил. Попробуй ssh указать ключ -vvv посмотри, что ему не нравится..

Гость, 2009-11-27 в 12:13:26

Ништяк.

zilia, 2009-12-22 в 15:26:27

генерировать пару ключей можно одной командой:
ssh-keygen -t rsa -f id_rsa -N ''

mayor, 2011-05-09 в 19:41:43

"На директорию .ssh и файл authorized_keys обязательно выставить права 0600" и в коментах об правах написали, и никто не вспомнил что директория .ssh и authorized_keys должны иметь владельцем юзера этой home директории (тут грабли поймал)
chown putin:putin /usr/home/putin/.ssh/
chown putin:putin /usr/home/puti/.ssh/authorized_keys
после этого все заработало.

Сергофан, 2011-07-19 в 12:54:37

А у меня на 8.2 и openssh 5.2, всё заработало после доведения конфига до такого состояния:

RSAAuthentication no
UseLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no

И выставлении прав на папку .ssh 700, а не 600. Правда ключик RSA =)

1, 2013-01-11 в 18:21:52

Тoвaрищщи! Этo пoля для вводa комментaриев к статье, а не для вопросов. Сюда пишите найденные бaги, или кaкие-то фичи :)
Для вопросов есть форум!



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1554 секунд
Из них PHP: 48%; SQL: 52%; Число SQL-запросов: 77 шт.
Исходный размер: 32973; Сжатая: 9194