ssh sin contraseña para otro nombre de usuario?

14

Quiero hacer una conexión ssh sin contraseña para un proyecto de subversión. En este momento estoy usando ssh + svn, y es un poco molesto, porque tengo que escribir la contraseña cada vez que quiero realizar transacciones con el servidor.

Encontré varios tutoriales en la web sobre cómo generar una clave para ssh sin contraseña, pero todos parecen suponer que estoy usando el mismo nombre de usuario en el sistema remoto que en mi sistema doméstico. Sin embargo, el nombre de usuario que uso para ssh + svn es diferente al nombre de la cuenta de usuario en el sistema que estoy ejecutando. ¿Cómo configuro esto correctamente? No he tenido suerte con solo cambiar el nombre en el archivo de clave.

usuario394
fuente

Respuestas:

15

Solo tiene que proporcionar el nombre de usuario del otro sistema en el svncomando:

$ svn co svn+ssh://otheruser@othersystem/path/to/repo

Para responder también el título de su pregunta:

$ ssh otheruser@othersystem

Esto hace que sshden la máquina remota busque ~otheruser/.ssh/authorized_keysla clave pública correspondiente a la clave privada en la máquina en la que está escribiendo el comando.

Warren Young
fuente
1
Entonces, parte de las instrucciones fueron hacer un archivo .ssh/id_rsa.puby subirlo al servidor remoto. Cuando lo hice, terminó con localusername @ localsystem. Eso debería cambiarse a remoteusername @ remotesystem, ¿verdad? ¿Tanto local como remotamente?
usuario394
55
No. Sólo anexar el contenido de su local de id_rsa.puba authorized_keysen el sistema remoto. Funcionará
Warren Young
1
alternativamente, muchos sistemas tienen ssh-copy-id para resolver este problema: "ssh-copy-id -i ~ / .ssh / id_rsa.pub username @ remote-machine"
Matt Simmons
Desafortunadamente, muchos no lo hacen, y parece que esto no es una parte estándar de OpenSSH, por lo que hay al menos un par de implementaciones diferentes de este script flotando.
Warren Young el
Si está utilizando gnome seahorse, tenga una implementación automática de claves.
Maciej Piechotka
9

Hay dos maneras de hacer esto:

1) poner usuario @ en la url svn; esto le dice a svn + ssh que inicie sesión como ese usuario. Creo que es una mala idea desde una perspectiva de mantenimiento porque cosas como elementos externos que apuntan a otras partes del repositorio no funcionarán correctamente.

2) crea un ~ / .ssh / config (documentado como ssh_config ) que dice algo como:

Host othersystem
  User otheruser

de esta manera, cualquier intento de ssh a othersystem utilizará otheruser de manera predeterminada. Lo cual es útil para ti cuando haces ssh manualmente y cuando estás usando svn.

pjz
fuente
5

No tiene que tener el mismo nombre de usuario en ambas máquinas. Siempre que genere la clave ( ssh-keygen), debe copiar la línea desde ~/.ssh/id_rsa.pubo ~/.ssh/id_dsa.pub(según el tipo de clave) desde el servidor local y agregarla al ~/.ssh/authorized_keyscontrol remoto.

% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Si no desea escribir remoteusercada vez, agregue a ~/.ssh/config:

Host remoteserver
    User remoteuser

PD. El nombre de la clave puede tener forma de localuser@localhostpero es solo un nombre . Puede ser igual de bueno myfavouritekey@myfavouritecomputery a nadie le importaría.

Maciej Piechotka
fuente
El comando "cat" anterior es el núcleo del ssh-copy-idscript común pero no estándar mencionado anteriormente. Lo reconozco porque no todos los sistemas que utilizo vienen ssh-copy-id, así que he escrito algo así varias veces. :)
Warren Young
Nunca he oído hablar de eso ssh-copy-id. Usualmente uso vimo seahorse;)
Maciej Piechotka
0

Después de crear .ssh / config y ejecutar:

cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Me sale el error:

Bad owner or permissions on /usr/share/eprints3/.ssh/config

luego agrego chmod 600 .ssh/config, y después de eso, funciona sin problemas.

enter code here
prazetyo
fuente
1
Es mejor si lo agrega en el archivo Authorized_keys, de lo contrario también eliminará las claves de publicación de otros. Así que mejor si edita su respuesta con 'cat >> .ssh / certified_keys'
Nitin Mahesh