SVN+SSH, не нужно делать ssh-add каждый раз? (Mac OS)
Я знаю, что ответ там, но я довольно тупой Unix и, вероятно, не узнаю решение, если оно ударит меня по лицу.
Я на Mac, подключаюсь к серверу SVN через SSH туннелирование. Мне пришлось ssh-add privateKey.txt
каждый раз, когда я хочу подключиться к серверу SVN (и Cornerstone, и Xcode подключаются к SVN).
Есть ли способ "сохранить" ключ где-нибудь, чтобы мне не приходилось делать это каждый раз? Добавить его в мой брелок? Какой-нибудь конфигурационный файл? Запустить скрипт?
7 ответов
Сначала переместите файл с закрытым ключом в ~/.ssh
, Это не является строго необходимым, но это стандартное место для таких вещей.
Тогда беги ssh-add -K ~/.ssh/privateKey.txt
, При необходимости вам будет предложено ввести ключевую фразу, а затем добавить ее в цепочку для ключей.
После этого вам не нужно больше ничего делать. Немного более длинное объяснение доступно здесь.
Хранение парольных фраз в цепочке для ключей
Чтобы сохранить ключевую фразу для вашего ключа по умолчанию в связке ключей, откройте терминал и запустите:
ssh-add -K
И для сохранения ключевой фразы запустите другой ключ:
ssh-add -K /path/to/private/key/file
Когда вам будет предложено ввести пароль, введите его и все.
Вам никогда не понадобится ни запускать ssh-add, ни вводить вашу фразу-пароль.
Ответ взят с этого сайта: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html
После долгих исследований, я думаю, я нашел ответ на этот вопрос полностью. Во-первых, убедитесь, что вы делаете ssh-add -K ~/.ssh/your_key_here
, Это добавляет ключ к вашей цепочке для ключей. В некоторых местах я читал, что этого достаточно, но я не был уверен. Это также зависит от Mac, поэтому, если вам нужно сделать это для другого варианта Unix, у вас не будет этой опции обязательно.
Для хорошей меры я отредактировал ~/.ssh/config
файл (возможно, вам придется его создать), чтобы указать все ключи, которые у меня есть. Шахта имеет следующее:
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/my_other_identity_here
IdentityFile ~/.ssh/yet_another_identity_here
Согласно справочной странице для ssh_config, он попробует их по порядку. Я не уверен, что первые три по умолчанию, которые я перечислил, должны быть там, но я все равно включил их.
Начиная с macOS 10.12.2 вы можете использовать UseKeychain
вариант. Узнайте больше здесь или посмотрите в man ssh_config
,
UseKeychain
On macOS, specifies whether the system should search for passphrases in the user's keychain
when attempting to use a particular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored into the keychain once it has
been verified to be correct. The argument must be ``yes'' or ``no''. The default is ``no''.
Так что просто сделайте следующее:
echo "UseKeychain yes" >> ~/.ssh/config
У меня нет большого опыта работы с Mac, поэтому я не уверен, подходит ли вам эта версия, но взгляните на http://www.phil.uu.nl/~xges/ssh/
Если это конкретное приложение не работает, это то, что вы ищете в любом случае - ssh agent
, На Unix-подобных блоках вы захотите запустить весь оконный менеджер, чтобы получить глобальный эффект, но это может быть невозможно в osx.
Немного больше информации: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html
sshkeychain - это одна из возможностей. Устанавливается нормально с macports, используя:
sudo port install sshkeychain
он использует цепочку для ключей для хранения паролей, и вы можете просто запустить его при запуске сеанса входа в систему (используя при первом запуске обычный щелчок правой кнопкой мыши на значке дока + "запуск при запуске")
Обратите внимание, что svn от Apple использует цепочку ключей для хранения паролей, но не обязательно двоичный файл svn, который вы создадите с помощью macports.
Добавьте ключ в связку ключей, выполнив:
ssh-add -K ~/.ssh/id_rsa
и отредактируйте свой ssh config (~/.ssh/config
) файл для автоматической загрузки ключей из цепочки ключей в ssh-agent (AddKeysToAgent yes
вариант) и хранить пароли в цепочке для ключей (UseKeychain yes
опция):
Host *
AddKeysToAgent yes
UseKeychain yes