RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
linux:bash:ssh-keygen_macos

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
linux:bash:ssh-keygen_macos [2020/02/25 16:06] – внешнее изменение 127.0.0.1linux:bash:ssh-keygen_macos [2021/06/17 12:53] (текущий) dx
Строка 1: Строка 1:
 +====== SSH: подключение по ключу без пароля на примере macOS ======
  
 +<note important>Заметка готова на 95%. Нужно прояснить некоторые моменты с keychain.</note>
 +
 +Минимум теории и максимум хауту. За теорией лучше обратиться на сайт wikipedia или на [[https://www.ssh.com/ssh/keygen|ssh.com]]
 +
 +{{:linux:should_change_my_ssh_key.png?nolink|}}
 +
 +===== Шаг 1. Создать пару ключей =====
 +
 +Нужно создать пару ключей: приватный (закрытый) ключ и публичный (открытый) ключ. Приватный ключ никогда никуда никому не передавать. Публичный ключ можно показывать всем.
 +
 +<code>
 +$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
 +Generating public/private rsa key pair.
 +Enter file in which to save the key (/Users/dx/.ssh/id_rsa): 
 +</code>
 +
 +Здесь
 +  * -t - алгоритм шифрования
 +  * -b - размера ключа
 +  * -C - комментарий. Ъ администраторы, указывают не только контактный email, но и идентификатор хоста, с которого будет использоваться ключ (например MacBook office). 
 +
 +Пр желании можно дать ключу другое имя (ключ ''-f''), например **id_rsa_server_vps13**.
 +
 +Следующий пункт passphrase. Это парольная фраза или проще говоря пароль для ключа.
 +
 +Минусы. Его нужно будет вводить каждый раз, когда используется ключ.\\
 +Очевидный плюс. Если файл окажется в чужих руках без парольной фразы использовать его не получится. Ну и не стоит использовать пароли admin111 или qwerty123.
 +
 +<code>
 +Enter passphrase (empty for no passphrase): 
 +Enter same passphrase again: 
 +Your identification has been saved in /Users/dx/.ssh/id_rsa.
 +Your public key has been saved in /Users/dx/.ssh/id_rsa.pub.
 +The key fingerprint is:
 +SHA256:Xdjkhw+A6JeOhccoLTKhV1MdwgwwlV/2vZ2pGT00UZk [email protected]
 +The key's randomart image is:
 ++---[RSA 4096]----+
 +|  ooo*oo.o. .  .+|
 +|  ..+ +.=  * ..E |
 +| . o = * o..* .. |
 +|. + o * *....+o  |
 +| . o o *S .  =.+ |
 +|      . .   o *  |
 +|             + . |
 +|            o    |
 +|                 |
 ++----[SHA256]-----+
 +</code>
 +
 +===== Шаг 2. Скопировать открытый ключ на удаленный хост =====
 +
 +Как всегда в unix есть множество вариантов для этого.
 +
 +==== Долгий путь ====
 +
 +В macOS можно скопировать содержимое файла в буфер обмена с помощью pbcopy
 +
 +<code>$ cat /Users/dx/.ssh/id_rsa.pub | pbcopy</code>
 +
 +Подключаемся к удаленному серверу, переходим в директорию .ssh и открываем (или создаем) файл **authorized_keys**.
 +
 +Добавляем ключ из буфера обмена.
 +
 +Кстати каждый ключ должен быть на отдельной строке. И никаких пустых строк между ключами.
 +
 +==== ssh-copy-id ====
 +
 +Начиная с Sierra утилита уже есть в составе системы и не нужно [[https://github.com/beautifulcode/ssh-copy-id-for-OSX|ставить с github]] или через homebrew.
 +
 +<code>$ ssh-copy-id dx@host</code>
 +
 +или с указанием имени ключа
 +
 +<code>$ ssh-copy-id -i ~/.ssh/id_rsa_server_vps13.pub dx@host</code>
 +
 +==== cat + ssh ====
 +
 +<code>cat ~/.ssh/id_rsa.pub | ssh dx@host 'cat >> ~/.ssh/authorized_keys'</code>
 +
 +===== Шаг 3. Локальный конфиг SSH и тест подключение =====
 +
 +Добавим локальный файл конфигурации для SSH клиента в файл ''~/.ssh/config''.
 +
 +<code>
 +Host rtfm
 +   Hostname rtfm.wiki
 +   Port 31337
 +   user dx
 +   IdentityFile ~/.ssh/id_rsa
 +   AddKeysToAgent yes
 +   UseKeychain yes
 +</code>
 +
 +  * HostName – IP адрес или FQDN.
 +  * User – Имя учетной записи на удаленном сервере.
 +  * IdentityFile – Локальный путь к приватному ключу 
 +  * Host - назовем его алиасом.
 +
 +Проверка подключения
 +
 +<code>$ ssh rtfm</code>
 +
 +Особый интерес представляют опции **UseKeychain** и **AddKeysToAgent**.
 +
 +Пароль приватного ключа можно хранить в "Связке ключей" (Apple KeyChain). Один раз добавили и всё - больше никогда не надо вводить никаких паролей для подключения по ssh.
 +
 +В каком-то релизе (Sierra? у меня не Linux, чтобы отслеживать это) всё сломали и Terminal теперь по-умолчанию не использует keychain.
 +
 +Подробности
 +  * https://developer.apple.com/library/archive/technotes/tn2449/_index.html
 +  * https://www.os-privacy.de/macos-keychain-ssh-passphrase-6388/
 +  * https://apple.stackexchange.com/a/250572
 +
 +Опция **AddKeysToAgent** вышла в OpenSSH 7.2 еще в 2016 году, но я узнал про нее только сейчас.
 +
 +Из changelog'а
 +
 +//В клиент ssh добавлена опция AddKeysToAgent, управляющая передачей в ssh-agent закрытого ключа, используемого в процессе аутентификации. Опция может принимать значения 'yes', 'no', 'ask', и 'confirm' (по умолчанию 'no')//
 +
 +Что еще важного в ссылках выше?
 +
 +  * Добавить private key вручную в keychain **ssh-add -K ~/.ssh/private_key_name**
 +  * Проверить права **chmod 600 ~/.ssh/id_rsa**
 +
 +Буду рад если кто-то более подробно разобрался в данном вопросе и дополнит заметку.
 +
 +EOM
 +
 +{{tag>ssh osx keychain}}