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
З якихось причин, коли у мене -KI все-таки виникають проблеми після перезавантаження
Mat Teague

7
Ви на macOS Sierra? Поведінка змінилася, і вам тепер потрібно чітко додати свої ключі до ssh-агента під час входу: 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, вони спробують їх у порядку. Я не впевнений, що перші три, які я перерахував, за замовчуванням, повинні бути там, але я все-таки включив їх.


Немає -Kпрапора на mac os x forssh-add
dr.dimitru

2
Там є-K прапор на OS X для ssh-add. Крім цього, це повинна бути обрана відповідь.
кайзер

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 - одна з можливостей. прекрасно встановлюється з макпортами, використовуючи:

sudo port install sshkeychain

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

Зауважте, що svn Apple використовує брелок для зберігання паролів, але не обов'язково бінарний файл svn, який ви створювали б із макпортами.


0

Додайте свій ключ до брелка, запустивши:

ssh-add -K ~/.ssh/id_rsa

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

Host *
 AddKeysToAgent yes
 UseKeychain yes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.