Что такое 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 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>
Если не хотим каждый раз вводить пароль — в настройках “связки ключей” снимаем галочку об автоматической блокировке.{% include gallery %} #todo
Обновление от 2022-04-17 ↩︎
How to Fix “WARNING: UNPROTECTED PRIVATE KEY FILE!” on Mac and Linux ↩︎
для того что бы посмотреть текущие ключи в в агенте
ssh-add -l
. ↩︎Методы автозагрузки приложений в Mac OS X. LaunchAgents и LaunchDaemons. ↩︎