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

105

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

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

Есть ли способ где-нибудь «сохранить» ключ, чтобы мне не приходилось делать это каждый раз? Добавить в мою Связку ключей? Какой-то конфигурационный файл? Сценарий запуска?

Джеймс Дж.
источник

Ответы:

172

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

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

После этого больше ничего делать не нужно. Чуть больше объяснений доступно здесь .

Николас Райли
источник
17
Думаю, стоит прямо отметить, что это вещь Mac, а не универсальная вещь Unix. В Ubuntu спорить ssh-addне могу -K.
Марк Эмери
2
Я хотел бы отметить, что хотя связанная статья предназначена для Leopard, она все еще работает в OS X Mavericks.
Джош Браун
1
Может у кого-то есть аналогичные команды для других сред? ssh-add mysysgit также не принимает аргумент -K
Блейк
5
По какой-то причине, когда я это делаю, у меня все еще проблема после перезапуска
Мэт Тиг
7
Вы используете macOS Sierra? Поведение изменилось, и теперь вам нужно явно добавить свои ключи в ssh-agent при входе в систему: github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Николас Райли
49

Хранение парольных фраз в связке ключей

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

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

Адам
источник
20

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

Миталия
источник
На -Kmac os x нет флага дляssh-add
dr.dimitru
2
Там является-K флаг на OS X для ssh-add. Кроме того, это должен быть выбранный ответ.
kaiser
1
Убедитесь, что вы используете /usr/bin/ssh-addдомашний /usr/local/bin/ssh-addпивовар без опции -K.
Ремко Вендт
2
Как только ~/.ssh/configон появится, нет необходимости запускатьssh-add команду каждый раз после перезагрузки компьютера.
Хайлонг
7

Начиная с 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

Бен
источник
3
Это нужно поднять. Очень важно !
quarezz
2

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

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

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

вираптор
источник
1

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

sudo port install sshkeychain

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

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

медуз
источник
0

Добавьте свой ключ в связку ключей, запустив:

ssh-add -K ~/.ssh/id_rsa

и отредактируйте файл ssh config ( ~/.ssh/config), чтобы автоматически загружать ключи из цепочки для ключей в ssh-agent ( AddKeysToAgent yesопция) и сохранять парольные фразы в цепочке для ключей ( UseKeychain yesопция):

Host *
 AddKeysToAgent yes
 UseKeychain yes
Якуб Кукул
источник