SVN + SSH, не нужно делать ssh-add каждый раз? (Mac OS)

Я знаю, что ответ есть, но я довольно Unix-тупой и, вероятно, не узнаю решение, если оно ударит меня по лицу.

Я нахожусь на Mac, подключаясь к SVN-серверу через SSH-туннелирование. Я должен ssh-add privateKey.txt каждый раз, когда я хочу подключиться к серверу SVN (оба Cornerstone и Xcode подключаются к SVN).

Есть ли способ "сохранить" ключ где-нибудь, поэтому мне не нужно это делать каждый раз? Добавить его в свой брелок? Некоторые файлы конфигурации? Запустить script?

Ответ 1

Сначала переместите файл личного ключа в ~/.ssh. Это не обязательно, но это стандартное место для таких вещей.

Затем запустите ssh-add -K ~/.ssh/privateKey.txt. В случае необходимости вам будет предложено ввести парольную фразу, а затем добавить его в свою цепочку ключей.

После этого вам не придется ничего делать. Немного более длинное объяснение доступно здесь.

Ответ 2

Сохранение паролей в цепочке ключей

Чтобы сохранить ключевую фразу для ключа по умолчанию в Keychain, откройте терминал и запустите:

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

Ответ 3

После долгих исследований, я думаю, что нашел ответ на этот вопрос полностью. Во-первых, убедитесь, что вы выполняете 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 он будет стараться в порядке. Я не уверен, что первые три по умолчанию, которые я перечислял, должны быть там, но я все равно включил их.

Ответ 4

Так как macOS 10.12.2 вы можете использовать опцию UseKeychain. Подробнее читайте здесь или просмотрите man ssh_config.

     UseKeychain
         On macOS, specifies whether the system should search for passphrases in the user 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

Ответ 5

У меня нет большого опыта работы с маками, поэтому не уверен, что эта версия подходит для вас, но посмотрите http://www.phil.uu.nl/~xges/ssh/

Если это приложение не работает, это то, что вы ищете в любом случае - ssh agent. В unix-подобных блоках вы можете запустить весь ваш оконный менеджер, чтобы получить глобальный эффект, но это может быть невозможно в osx.

Дополнительная информация: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

Ответ 6

sshkeychain - одна из возможностей. устанавливается с использованием macports, используя:

sudo port install sshkeychain

он использует брелок для хранения паролей, и вы можете просто запустить его при запуске сеанса входа в систему (используя при первом запуске обычный щелчок правой кнопкой мыши на значке док-станции + "запуск при запуске" )

Обратите внимание, что Apple svn использует keychain для хранения паролей, но не обязательно для двоичного файла svn, который вы создадите с помощью macports.