SVN + SSH, ¿no tienes que hacer ssh-add cada vez? (Mac OS)

105

Sé que la respuesta está ahí fuera, pero soy bastante tonto en Unix y probablemente no reconocería la solución si me golpeara en la cara.

Estoy en una Mac, conectándome a un servidor SVN a través de un túnel SSH. Tengo que hacerlo ssh-add privateKey.txtcada vez que quiero conectarme al servidor SVN (tanto Cornerstone como Xcode se están conectando a SVN).

¿Hay alguna forma de "guardar" la clave en algún lugar para no tener que hacer esto cada vez? ¿Agregarlo a mi llavero? ¿Algún archivo de configuración? ¿Iniciar el script?

James J
fuente

Respuestas:

172

Primero, mueva su archivo de clave privada a ~/.ssh . Esto no es estrictamente necesario, pero es el lugar estándar para tales cosas.

Entonces corre ssh-add -K ~/.ssh/privateKey.txt. Le pedirá su frase de contraseña si es necesario, luego la agregará a su Llavero.

Después de eso, no debería tener que hacer nada más. Una explicación un poco más larga está disponible aquí .

Nicholas Riley
fuente
17
Me imagino que vale la pena señalar explícitamente que esto es algo de Mac, no de Unix universal. En Ubuntu, ssh-addno puedo aceptar una -Kdiscusión.
Mark Amery
2
Me gustaría señalar que, si bien el artículo vinculado es para Leopard, esto todavía funciona en OS X Mavericks.
Josh Brown
1
¿Quizás alguien tiene un comando equivalente para otros entornos? ssh-add de mysysgit tampoco acepta el argumento -K
Blake
5
Por alguna razón, cuando lo hago, todavía tengo el problema después del reinicio
Mat Teague
7
¿Estás en macOS Sierra? El comportamiento ha cambiado y ahora debe agregar explícitamente sus claves a ssh-agent al iniciar sesión: github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Nicholas Riley
49

Almacenamiento de frases de contraseña en el llavero

Para almacenar la frase de contraseña para su clave predeterminada en el llavero, abra una Terminal y ejecute:

ssh-add -K

Y para almacenar la frase de contraseña para una ejecución de clave diferente:

ssh-add -K /path/to/private/key/file

Cuando se le solicite su contraseña, ingrésela y listo.

Nunca necesitará ejecutar ssh-add ni ingresar su contraseña nuevamente.

Respuesta tomada de este sitio: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

Adán
fuente
20

Después de mucha exploración, creo que he encontrado la respuesta a este problema por completo. Primero, asegúrate de hacerlossh-add -K ~/.ssh/your_key_here . Esto agrega la llave a su llavero. En algunos lugares, he leído que esto es suficiente, pero no estaba seguro. Esto también es específico de Mac, por lo que si necesita hacer esto en otro tipo de Unix, no tendrá esta opción necesariamente.

Por ~/.ssh/configsi acaso , edité el archivo (puede que tengas que crearlo) para que apunte a todas las claves que tengo. El mío tiene lo siguiente:

IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa 
IdentityFile ~/.ssh/my_other_identity_here
IdentityFile ~/.ssh/yet_another_identity_here

Según la página de manual de ssh_config, los probará en orden. No estoy seguro de si los tres primeros predeterminados que he enumerado deben estar allí, pero los he incluido de todos modos.

mitalia
fuente
No hay -Kbandera en mac os x parassh-add
dr.dimitru
2
No es una -Kbandera en OS X para ssh-add. Además de eso, esta debería ser la respuesta seleccionada.
Kaiser
1
Asegúrate de usar /usr/bin/ssh-addel homebrew provisto /usr/local/bin/ssh-addque no proporciona la opción -K.
Remco Wendt
2
Una vez que ~/.ssh/configesté allí, no es necesario ejecutar el ssh-addcomando cada vez que se reinicia la máquina.
Hailong
7

Desde macOS 10.12.2 puede utilizar la UseKeychainopción. Lea más aquí o consulte 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''.

Así que haz lo siguiente:

echo "UseKeychain yes" >> ~/.ssh/config

Ben
fuente
3
Esto necesita subir. ¡Muy importante !
quarezz
2

No tengo mucha experiencia con Mac, así que no estoy seguro de si esta versión es adecuada para usted, pero eche un vistazo a http://www.phil.uu.nl/~xges/ssh/

Si esta aplicación en particular no funciona, eso es lo que está buscando de todos modos - ssh agent. En cajas tipo Unix, querría iniciar todo su administrador de ventanas a través de eso, para obtener el efecto global, pero puede que no sea posible en osx.

Más información: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

viraptor
fuente
1

sshkeychain es una posibilidad. se instala bien con macports usando:

sudo port install sshkeychain

utiliza el llavero para almacenar contraseñas, y puede simplemente iniciarlo al inicio de su sesión de inicio de sesión (utilizando en el primer inicio el clic derecho habitual en el icono del dock + "iniciar al inicio")

Tenga en cuenta que el svn de Apple usa llaveros para almacenar contraseñas, pero no necesariamente el binario svn que construiría con macports.

meduz
fuente
0

Agregue su clave al llavero ejecutando:

ssh-add -K ~/.ssh/id_rsa

y edite su ~/.ssh/configarchivo ssh config ( ) para cargar automáticamente las claves desde el llavero al ssh-agent ( AddKeysToAgent yesopción) y almacenar contraseñas en el llavero ( UseKeychain yesopción):

Host *
 AddKeysToAgent yes
 UseKeychain yes
Jakub Kukul
fuente