Хинт про работу с ключами SSH на mac os x
Что такое SSH и для чего они нужны лучше чем уже сказано на Хабре рассказать не смогу. Потому лишь добавлю что внезапно а в версии 10.12.2 macOS обновилась библиотека OpenSSH 1 и логика работы с ключами. Что конечно же все сломало — ssh-ключи не загружаются после загрузки системы. Что очень неудобно при работе Sourcetree, Github, хостингами да и вообще. Так что подготовил инструкцию больше для себя как исправить включая все шаги.
- Создаем ключ если его еще нет. Инструкций с картинками в сети полно, например, на Github.
- Добавляем passphrase ключа в системный Keychain
$ ssh-add -K /path/to/my/key.pem
для варианта когда ваша версия macos старше выше чем 12.0 то команда должна выглядеть как: 2
$ ssh-add --apple-use-keychain /path/to/my/key
Если появляется ошибка WARNING: UNPROTECTED PRIVATE KEY FILE!
3 то необходимо настроить права доступа, дабы другие пользователи в сиcтеме не имели доступ к файлу, а именно запустить команду:
$ sudo chmod 600 /path/to/my/key
ну и поставить такие же права на всю папку ~/.ssh
$ sudo chmod 755 ~/.ssh
- Добавляем ключ в ssh-agent
ssh-add -A
4 - Добавляем файл или редактируем файл
~/.ssh/config
и вносим параметры параметры:
Host \*
UseKeychain yes
AddKeysToAgent yes
- Теперь нужно команду
ssh-add -A
автоматически на старте системы. Первый вариант один через скрипт в~/.bash_profile
:
ssh-add -A 2>/dev/null;
- другой через файл загрузки в
~/Library/LaunchAgents/
5 Содержание файла с расширением .plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ssh-add-a</string>
<key>ProgramArguments</key>
<array>
<string>ssh-add</string>
<string>-A</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
- Если не хотим каждый раз вводить пароль — в настройках “связки ключей” снимаем галочку об автоматической блокировке.

-
Обновление от 2022-04-17 ↩
-
How to Fix “WARNING: UNPROTECTED PRIVATE KEY FILE!” on Mac and Linux ↩
-
для того что бы посмотреть текущие ключи в в агенте
ssh-add -l
. ↩ -
Методы автозагрузки приложений в Mac OS X. LaunchAgents и LaunchDaemons. ↩