RTFM.WIKI

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

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

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


Боковая панель


Навигация

Линкшэринг

ALARM!

Добавить новую страницу

You are not allowed to add pages
linux:bash:ssh-keygen_macos


SSH: подключение по ключу без пароля на примере macOS

Заметка готова на 95%. Нужно прояснить некоторые моменты с keychain.

Минимум теории и максимум хауту. За теорией лучше обратиться на сайт wikipedia или на ssh.com

Шаг 1. Создать пару ключей

Нужно создать пару ключей: приватный (закрытый) ключ и публичный (открытый) ключ. Приватный ключ никогда никуда никому не передавать. Публичный ключ можно показывать всем.

$ ssh-keygen -t rsa -b 4096 -C "dx@rtfm.wiki"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/dx/.ssh/id_rsa): 

Здесь

  • -t - алгоритм шифрования
  • -b - размера ключа
  • -C - комментарий. Ъ администраторы, указывают не только контактный email, но и идентификатор хоста, с которого будет использоваться ключ (например MacBook office).

Пр желании можно дать ключу другое имя, например id_rsa_server_vps13.

Следующий пункт passphrase. Это парольная фраза или проще говоря пароль для ключа.

Минусы. Его нужно будет вводить каждый раз, когда используется ключ.
Очевидный плюс. Если файл окажется в чужих руках без парольной фразы использовать его не получится. Ну и не стоит использовать пароли admin111 или qwerty123.

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 dx@rtfm.wiki
The key's randomart image is:
+---[RSA 4096]----+
|  ooo*oo.o. .  .+|
|  ..+ +.=  * ..E |
| . o = * o..* .. |
|. + o * *....+o  |
| . o o *S .  =.+ |
|      . .   o *  |
|             + . |
|            o    |
|                 |
+----[SHA256]-----+

Шаг 2. Скопировать открытый ключ на удаленный хост

Как всегда в unix есть множество вариантов для этого.

Долгий путь

В macOS можно скопировать содержимое файла в буфер обмена с помощью pbcopy

$ cat /Users/dx/.ssh/id_rsa.pub | pbcopy

Подключаемся к удаленному серверу, переходим в директорию .ssh и открываем (или создаем) файл authorized_keys.

Добавляем ключ из буфера обмена.

Кстати каждый ключ должен быть на отдельной строке. И никаких пустых строк между ключами.

ssh-copy-id

Начиная с Sierra утилита уже есть в составе системы и не нужно ставить с github или через homebrew.

$ ssh-copy-id dx@host

или с указанием имени ключа

$ ssh-copy-id -i ~/.ssh/id_rsa_server_vps13.pub dx@host

cat + ssh

cat ~/.ssh/id_rsa.pub | ssh dx@host 'cat >> ~/.ssh/authorized_keys'

Шаг 3. Локальный конфиг SSH и тест подключение

Добавим локальный файл конфигурации для SSH клиента в файл ~/.ssh/config.

Host rtfm
   Hostname rtfm.wiki
   Port 31337
   user dx
   IdentityFile ~/.ssh/id_rsa
   AddKeysToAgent yes
   UseKeychain yes
  • HostName – IP адрес или FQDN.
  • User – Имя учетной записи на удаленном сервере.
  • IdentityFile – Локальный путь к приватному ключу
  • Host - назовем его алиасом.

Проверка подключения

$ ssh rtfm

Особый интерес представляют опции UseKeychain и AddKeysToAgent.

Пароль приватного ключа можно хранить в "Связке ключей" (Apple KeyChain). Один раз добавили и всё - больше никогда не надо вводить никаких паролей для подключения по ssh.

В каком-то релизе (Sierra? у меня не Linux, чтобы отслеживать это) всё сломали и Terminal теперь по-умолчанию не использует keychain.

Подробности

Опция 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

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies

Discussion

Enter your comment. Wiki syntax is allowed:
 
linux/bash/ssh-keygen_macos.txt · Последнее изменение: 2020/02/25 16:06 — dx