SSH - авторизация по ключам

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:6766621c4a6bf8edd11cb6d49f20dbb6' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Одним из самых надежных способов авторизации является авторизация по ключам. Само собой подразумевается, что приватные ключи хранятся в надежном месте... Еще одним плюсом использования авторизации по ключам является возможность использоватния в скриптах.</p>\n<p class=\"rtejustify\">Рассмотрим пример настройки авторизации по ключам на <strong>FreeBSD</strong>. Создадим групу для удаленных пользователей и непосредственно пользователя <strong>remoteuser1</strong>,&nbsp;используя свободные <strong>uid</strong> и <strong>gid</strong>:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua#</span> <strong>pw groupadd -n remoteusers -g </strong><span style=\"color:#ff0000\"><strong>1500</strong></span>&nbsp;<br />\n <span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua#</span> <strong>adduser</strong><br />\n Username: <strong>remoteuser1</strong><br />\n Full name: <strong>RemoteUser1</strong><br />\n Uid (Leave empty for default): <span style=\"color:#ff0000\"><strong>1500</strong></span><br />\n Login group [remoteuser1]: <strong>remoteusers</strong><br />\n Login group is remoteusers. Invite remoteuser1 into other groups? []:<br />\n Login class [default]: <strong>russian</strong><br />\n Shell (sh csh tcsh nologin) [sh]: <strong>tcsh</strong><br />\n Home directory [/home/remoteuser1]:<br />\n Use password-based authentication? [yes]:<br />\n Use an empty password? (yes/no) [no]:<br />\n Use a random password? (yes/no) [no]:<br />\n Enter password:<br />\n Enter password again:<br />\n Lock out the account after creation? [no]:<br />\n Username&nbsp;&nbsp; : remoteuser1<br />\n Password&nbsp;&nbsp; : *****<br />\n Full Name&nbsp; : RemoteUser1<br />\n Uid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1500<br />\n Class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : russian<br />\n Groups&nbsp;&nbsp;&nbsp;&nbsp; : remoteusers<br />\n Home&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /home/remoteuser1<br />\n Shell&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /bin/tcsh<br />\n Locked&nbsp;&nbsp;&nbsp;&nbsp; : no<br />\n OK? (yes/no): <strong>yes</strong><br />\n adduser: INFO: Successfully added (remoteuser1) to the user database.<br />\n Add another user? (yes/no): <strong>no</strong><br />\n Goodbye!</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Переключаемся на созданного пользователя:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua#</span>&nbsp;<strong>su remoteuser1</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Теперь немного теории. Воспользовавшись командой <strong>ssh-keygen</strong> можно создать ключи <strong>DSA</strong> или <strong>RSA</strong>,&nbsp;которыми пользователи могут аутентифицироваться. Согласно материала из Википедии,&nbsp;имеем такие определения:</p>\n<ul>\n<li class=\"rtejustify\"><a href=\"http://ru.wikipedia.org/wiki/DSA\"><strong>DSA</strong> (Digital Signature Algorithm)</a> &mdash; алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.</li>\n<li class=\"rtejustify\"><a href=\"http://ru.wikipedia.org/wiki/RSA\"><strong>RSA</strong> (буквенная аббревиатура от фамилий Rivest, Shamir и Adleman)</a> &mdash; криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел. Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи.</li>\n</ul>\n<p class=\"rtejustify\">Каким из методов воспользоваться - выбирать Вам. Однако стоит отметить особенность алгоритма <strong>DSA</strong> - длина ключа,&nbsp;который генерируется,&nbsp;составляет <strong>1024 бита</strong>. При попытке увеличить размер ключа,&nbsp;в ответ вываливается сообщение &quot;<strong>DSA keys must be 1024 bits</strong>&quot;. Однако,&nbsp;стоит отметить тот факт,&nbsp;что <strong><span style=\"color:#ff0000\">при увеличении размера ключа,&nbsp;возрастает восприимчивость алгоритмов к определенным видам атак</span></strong>!</p>\n<p class=\"rtejustify\">Сгенерируем ключ,&nbsp;принимая значения по умолчанию (поле passphrase оставляем пустым).</p>\n<p class=\"rtejustify\">Генерирование <strong>DSA</strong> ключа:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua%</span>&nbsp;<strong>ssh-keygen -t dsa</strong></p>\n<pre class=\"rtejustify\">\nGenerating public/private dsa key pair.\nEnter file in which to save the key (/home/remoteuser1/.ssh/id_dsa):\nCreated directory &#39;/home/remoteuser1/.ssh&#39;.\nEnter passphrase (empty for no passphrase):\nEnter same passphrase again:\nYour identification has been saved in /home/remoteuser1/.ssh/id_dsa.\nYour public key has been saved in /home/remoteuser1/.ssh/id_dsa.pub.\nThe key fingerprint is:\nd0:f1:a6:e8:d8:d7:3d:2f:90:e6:f8:78:75:8d:a4:b9 <span class=\"spamspan\"><span class=\"u\">remoteuser1</span> [at] <span class=\"d\">test [dot] muff [dot] kiev [dot] ua</span></span>\nThe key&#39;s randomart image is:\n+--[ DSA 1024]----+\n| . |\n| . o |\n| . . o |\n| o o . |\n| . S . + o |\n| + .+.+ o .|\n| . o .+.ooo |\n| ...o Eo |\n| .o. .. |\n+-----------------+</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Генерирование <strong>RSA</strong> ключа, длиной 2048 бит:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua%</span>&nbsp;<strong>ssh-keygen -t rsa -b 2048</strong></p>\n<pre class=\"rtejustify\">\nGenerating public/private rsa key pair.\nEnter file in which to save the key (/home/remoteuser1/.ssh/id_rsa):\nEnter passphrase (empty for no passphrase):\nEnter same passphrase again:\nYour identification has been saved in /home/remoteuser1/.ssh/id_rsa.\nYour public key has been saved in /home/remoteuser1/.ssh/id_rsa.pub.\nThe key fingerprint is:\n2b:b2:56:42:1f:a6:dd:b6:98:cf:5c:17:a0:f5:01:70 <span class=\"spamspan\"><span class=\"u\">remoteuser1</span> [at] <span class=\"d\">test [dot] muff [dot] kiev [dot] ua</span></span>\nThe key&#39;s randomart image is:\n+--[ RSA 2048]----+\n| ..E |\n| . . |\n| o . |\n| . o o o . |\n| . = oS o |\n| o + o. . |\n| .o.+... . |\n| .oo+.. . |\n| .. .+ |\n+-----------------+</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">После использования&nbsp;команды <strong>ssh-keygen</strong>, будет созданы пара из публичного и&nbsp;приватного ключей,&nbsp;используемых для аутентификации. Приватный ключ сохраняется в <strong>~/.ssh/id_dsa</strong> (или <strong>~/.ssh/id_rsa</strong> соответственно), а публичный в <strong>~/.ssh/id_dsa.pub</strong> (или <strong>~/.ssh/id_rsa.pub</strong> соответственно). В целях безопасности советую приватные ключи сразу&nbsp;перемещать в надежное место и удалять их с сервера.</p>\n<p class=\"rtejustify\">Включаем авторизацию по ключам. В файл <strong>/etc/ssh/sshd_config</strong>&nbsp;внесем такие строки:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\" style=\"background-color: rgb(51, 51, 51);\"><span style=\"color:#00ff00\"><strong>#&nbsp;Разрешение использования RSA ключей</strong></span><br />\n <span style=\"color:#3366ff\"><strong>RSAAuthentication yes</strong></span><br />\n <strong><span style=\"color:#00ff00\"># Разрешение авторизации при помощи ключей</span><br />\n <span style=\"color:#3366ff\">PubkeyAuthentication yes</span><br />\n <span style=\"color:#00ff00\"># Путь&nbsp;к ключам, с которыми можно соединяться. </span></strong><br />\n <span style=\"color:#3366ff\"><strong>AuthorizedKeysFile .ssh/authorized_keys</strong></span></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">После внесения изменений перезапускаем демон <strong>sshd</strong>:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua#</span>&nbsp;<strong>sh /etc/rc.d/sshd restart</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Для&nbsp;авторизации по ключам, на удаленном компьютере публичный ключ должен быть помещен в файл <strong>~/.ssh/authorized_keys</strong> . Соответствено,&nbsp;необходимо записать сгенерированные &nbsp;ключи в <strong>~/.ssh/authorized_keys</strong>.</p>\n<p class=\"rtejustify\">Для <strong>DSA</strong>:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua%</span>&nbsp;<strong>cd ~/.ssh/</strong><br />\n <span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua%</span><strong> cat id_dsa.pub &gt;&gt; authorized_keys </strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Для RSA:</p>\n<p class=\"rtejustify\">&nbsp;</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua%</span>&nbsp;<strong>cd ~/.ssh/</strong><br />\n <span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua%</span><strong>&nbsp;cat id_rsa.pub &gt;&gt; authorized_keys </strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Теперь скопируем приватный ключ на сервер,&nbsp;с которого будем подключаться, в домашний каталог пользователя и в целях безопасности удалим приватный ключ.</p>\n<p class=\"rtejustify\"><strong>DSA</strong>:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><span style=\"color:#ff0000\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua% <strong>cd ~/.ssh/</strong></span><br />\n test</span><span style=\"color:#0000ff\">.muff.kiev.ua% <strong>scp id_dsa <span class=\"spamspan\"><span class=\"u\">remoteuser1</span> [at] <span class=\"d\">server [dot] muff [dot] kiev [dot] ua</span></span>:/home/remoteuser1/.ssh/</strong><br />\n test<span style=\"color:#0000ff\">.muff.kiev.ua% <strong>rm id_dsa</strong></span></span></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\"><strong>RSA</strong>:</p>\n<p class=\"rtejustify\">&nbsp;</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><span style=\"color:#ff0000\"><span style=\"color:#ff0000\">test</span><span style=\"color:#0000ff\">.muff.kiev.ua% <strong>cd ~/.ssh/</strong></span><br />\n test</span><span style=\"color:#0000ff\">.muff.kiev.ua% <strong>scp id_rsa <span class=\"spamspan\"><span class=\"u\">remoteuser1</span> [at] <span class=\"d\">server [dot] muff [dot] kiev [dot] ua</span></span>:/home/remoteuser1/.ssh/</strong><br />\n test<span style=\"color:#0000ff\">.muff.kiev.ua% <strong>rm id_rsa</strong></span></span></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">На этом настройка авторизации по ключам заканчивается. Пытаемся залогиниться:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><span style=\"color:#ff0000\">server</span><span style=\"color:#0000ff\">.muff.kiev.ua%</span> <strong>ssh test.muff.kiev.ua</strong><br />\n test<span style=\"color:#0000ff\">.muff.kiev.ua%</span></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Все работает,&nbsp;авторизацию не запрашивает. Это в случае,&nbsp;если будете коннектиться с <strong>Unix</strong>-системы.</p>\n<p class=\"rtejustify\">Если же попытаться подключиться с <strong>Windows</strong>-системы,&nbsp;используя как <strong>ssh</strong>-клиента утилиту <strong>PuTTY</strong>, то при попытке использовать полученный приватный ключ получим ошибку &quot;<strong>Unable to use key file (OpenSSH SSH2 private key)</strong>&quot;.</p>\n<p class=\"rtejustify\">Для решения этой проблемы необходимо воспользоваться утилитой <strong>puttygen</strong>. Запускаем утилиту и импортируем наш приватный ключ:&nbsp;<strong>Conversions -&gt; Import Key</strong>. После этого сохраняем полученый <strong>ppk</strong>-файл, нажав на кнопку &quot;<strong>save private key</strong>&quot;.</p>\n<p class=\"rtejustify\">Запускаем <strong>PuTTY</strong> и в настройках сессии указываем следующие настройки и действия:</p>\n<ul>\n<li class=\"rtejustify\">Connection -&gt; data -&gt; autologin username =User</li>\n<li class=\"rtejustify\">Connection -&gt; data -&gt;ssh -auth = &lt;path_to_ppk-file&gt;</li>\n<li class=\"rtejustify\">Сохраняем сессию</li>\n</ul>\n<p class=\"rtejustify\">Запускаем <strong>PuTTY</strong> выбираем сохраненную сессию, нажимаем кнопку &quot;<strong>Open</strong>&quot; и попадаем в систему.</p>\n<p class=\"rtejustify\">&nbsp;</p>\n', created = 1767332943, expire = 1767419343, headers = '', serialized = 0 WHERE cid = '2:6766621c4a6bf8edd11cb6d49f20dbb6' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:0dee859ede4fee362fb5d5fa4c13f536' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>смысл от генерации ключей если можно зайти по логину и паролю</p>\n<p>&nbsp;</p>\n<p>ee /etc/ssh/sshd_config</p>\n<p>ChallengeResponseAuthentication no</p>\n', created = 1767332943, expire = 1767419343, headers = '', serialized = 0 WHERE cid = '2:0dee859ede4fee362fb5d5fa4c13f536' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767332943, expire = 1767419343, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767332943, expire = 1767419343, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Одним из самых надежных способов авторизации является авторизация по ключам. Само собой подразумевается, что приватные ключи хранятся в надежном месте... Еще одним плюсом использования авторизации по ключам является возможность использоватния в скриптах.

Рассмотрим пример настройки авторизации по ключам на FreeBSD. Создадим групу для удаленных пользователей и непосредственно пользователя remoteuser1, используя свободные uid и gid:

test.muff.kiev.ua# pw groupadd -n remoteusers -g 1500 
test.muff.kiev.ua# adduser
Username: remoteuser1
Full name: RemoteUser1
Uid (Leave empty for default): 1500
Login group [remoteuser1]: remoteusers
Login group is remoteusers. Invite remoteuser1 into other groups? []:
Login class [default]: russian
Shell (sh csh tcsh nologin) [sh]: tcsh
Home directory [/home/remoteuser1]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : remoteuser1
Password   : *****
Full Name  : RemoteUser1
Uid        : 1500
Class      : russian
Groups     : remoteusers
Home       : /home/remoteuser1
Shell      : /bin/tcsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (remoteuser1) to the user database.
Add another user? (yes/no): no
Goodbye!

Переключаемся на созданного пользователя:

test.muff.kiev.ua# su remoteuser1

Теперь немного теории. Воспользовавшись командой ssh-keygen можно создать ключи DSA или RSA, которыми пользователи могут аутентифицироваться. Согласно материала из Википедии, имеем такие определения:

  • DSA (Digital Signature Algorithm) — алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.
  • RSA (буквенная аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел. Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи.

Каким из методов воспользоваться - выбирать Вам. Однако стоит отметить особенность алгоритма DSA - длина ключа, который генерируется, составляет 1024 бита. При попытке увеличить размер ключа, в ответ вываливается сообщение "DSA keys must be 1024 bits". Однако, стоит отметить тот факт, что при увеличении размера ключа, возрастает восприимчивость алгоритмов к определенным видам атак!

Сгенерируем ключ, принимая значения по умолчанию (поле passphrase оставляем пустым).

Генерирование DSA ключа:

test.muff.kiev.ua% ssh-keygen -t dsa

Generating public/private dsa key pair.
Enter file in which to save the key (/home/remoteuser1/.ssh/id_dsa):
Created directory '/home/remoteuser1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/remoteuser1/.ssh/id_dsa.
Your public key has been saved in /home/remoteuser1/.ssh/id_dsa.pub.
The key fingerprint is:
d0:f1:a6:e8:d8:d7:3d:2f:90:e6:f8:78:75:8d:a4:b9 remoteuser1 [at] test [dot] muff [dot] kiev [dot] ua
The key's randomart image is:
+--[ DSA 1024]----+
|        .        |
|       . o       |
|      . . o      |
|       o o    .  |
|      . S  . + o |
|     +   .+.+ o .|
|    . o .+.ooo   |
|       ...o Eo   |
|        .o.  ..  |
+-----------------+

Генерирование RSA ключа, длиной 2048 бит:

test.muff.kiev.ua% ssh-keygen -t rsa -b 2048

Generating public/private rsa key pair.
Enter file in which to save the key (/home/remoteuser1/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/remoteuser1/.ssh/id_rsa.
Your public key has been saved in /home/remoteuser1/.ssh/id_rsa.pub.
The key fingerprint is:
2b:b2:56:42:1f:a6:dd:b6:98:cf:5c:17:a0:f5:01:70 remoteuser1 [at] test [dot] muff [dot] kiev [dot] ua
The key's randomart image is:
+--[ RSA 2048]----+
|        ..E      |
|         . .     |
|          o .    |
|    . o  o o .   |
|   . = oS   o    |
|    o + o.   .   |
|    .o.+... .    |
|    .oo+.. .     |
|   ..  .+        |
+-----------------+

После использования команды ssh-keygen, будет созданы пара из публичного и приватного ключей, используемых для аутентификации. Приватный ключ сохраняется в ~/.ssh/id_dsa (или ~/.ssh/id_rsa соответственно), а публичный в ~/.ssh/id_dsa.pub (или ~/.ssh/id_rsa.pub соответственно). В целях безопасности советую приватные ключи сразу перемещать в надежное место и удалять их с сервера.

Включаем авторизацию по ключам. В файл /etc/ssh/sshd_config внесем такие строки:

# Разрешение использования RSA ключей
RSAAuthentication yes
# Разрешение авторизации при помощи ключей
PubkeyAuthentication yes
# Путь к ключам, с которыми можно соединяться.

AuthorizedKeysFile .ssh/authorized_keys

После внесения изменений перезапускаем демон sshd:

test.muff.kiev.ua# sh /etc/rc.d/sshd restart

Для авторизации по ключам, на удаленном компьютере публичный ключ должен быть помещен в файл ~/.ssh/authorized_keys . Соответствено, необходимо записать сгенерированные  ключи в ~/.ssh/authorized_keys.

Для DSA:

test.muff.kiev.ua% cd ~/.ssh/
test.muff.kiev.ua% cat id_dsa.pub >> authorized_keys

Для RSA:

 

test.muff.kiev.ua% cd ~/.ssh/
test.muff.kiev.ua% cat id_rsa.pub >> authorized_keys

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

DSA:

test.muff.kiev.ua% cd ~/.ssh/
test
.muff.kiev.ua% scp id_dsa remoteuser1 [at] server [dot] muff [dot] kiev [dot] ua:/home/remoteuser1/.ssh/
test.muff.kiev.ua% rm id_dsa

RSA:

 

test.muff.kiev.ua% cd ~/.ssh/
test
.muff.kiev.ua% scp id_rsa remoteuser1 [at] server [dot] muff [dot] kiev [dot] ua:/home/remoteuser1/.ssh/
test.muff.kiev.ua% rm id_rsa

На этом настройка авторизации по ключам заканчивается. Пытаемся залогиниться:

server.muff.kiev.ua% ssh test.muff.kiev.ua
test.muff.kiev.ua%

Все работает, авторизацию не запрашивает. Это в случае, если будете коннектиться с Unix-системы.

Если же попытаться подключиться с Windows-системы, используя как ssh-клиента утилиту PuTTY, то при попытке использовать полученный приватный ключ получим ошибку "Unable to use key file (OpenSSH SSH2 private key)".

Для решения этой проблемы необходимо воспользоваться утилитой puttygen. Запускаем утилиту и импортируем наш приватный ключ: Conversions -> Import Key. После этого сохраняем полученый ppk-файл, нажав на кнопку "save private key".

Запускаем PuTTY и в настройках сессии указываем следующие настройки и действия:

  • Connection -> data -> autologin username =User
  • Connection -> data ->ssh -auth = <path_to_ppk-file>
  • Сохраняем сессию

Запускаем PuTTY выбираем сохраненную сессию, нажимаем кнопку "Open" и попадаем в систему.

 

Ваша оценка: Нет Средняя: 4.7 (3 голоса)

Re: SSH - авторизация по ключам

смысл от генерации ключей если можно зайти по логину и паролю

 

ee /etc/ssh/sshd_config

ChallengeResponseAuthentication no

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

Страница показывалась KOI-как...