Instalar clave pública a través de ssh-copy-id para otros usuarios

26

ssh-copy-idse puede usar para instalar su clave pública en una máquina remota authorized_keys. ¿Podría usarse el mismo comando para instalar las claves públicas de otros usuarios, si tiene sudocapacidad?

Actualización: tanto locales como remotos están usando Ubuntu 12.04.

Actualización 2: describe el procedimiento para crear una nueva cuenta de usuario y agregar clave pública

  1. (remoto) Cree una nueva cuenta de usuario y configúrela solo para acceso de clave pública del usuario.
  2. (local) Genere una clave pública para la nueva cuenta de usuario (ssh-keygen).
  3. Normalmente lo que hago es crear el directorio y el archivo .ssh/authorized_keysen el servidor remoto, luego copiar y pegar la clave pública generada localmente en la cuenta del nuevo usuario. Lo que estoy buscando es que si puedo usar ssh-copy-idpara instalar la clave pública de este usuario recién creado directamente en el directorio ssh. Solo para guardar un par de comandos más.
realguess
fuente

Respuestas:

12

No es el mismo comando, pero si tiene sudo en el host remoto, puede usar ssh para realizar de forma remota los pasos necesarios. Utilizo el siguiente comando para enviar mi clave ssh al usuario raíz de mi frambuesa:

cat ~/.ssh/id_rsa.pub | \
  ssh [email protected] \
  "sudo mkdir /root/.ssh; sudo tee -a /root/.ssh/authorized_keys"
  • gatos mi clave bublic
  • lo canaliza a ssh
  • ssh se conecta a mi frambuesa como usuario ssh
  • en remoto usa sudo para crear /root/.ssh
  • luego usa sudo con "tee -a" para agregar stdin (que contiene la clave del primer gato) a /root/.ssh/authorized_keys

Simplemente reúna estas cosas como un script, tal vez agregue algunos chmod / chown en el lado remoto y tenga lo que necesita.

Michael Wyraz
fuente
Hermoso y gracias por el desglose de comandos.
Blake Frederick
1

Sí :), si usted, por ejemplo, está registrado como ghost @ ubuntu y usted

ssh-copy-id root@host-ip

De lo que verá, en el servidor host en /root/.ssh/authorized_keysla clave de archivo que termina con ghost@ubuntu.
Eso significa que el usuario fantasma ha copiado su par de claves y ya no tiene que escribir la contraseña.
No estoy seguro de que funcione con -u <username>flag ahora, pero siempre puedes iniciar sesión como un usuario diferente con

su <user_name> 

y luego ssh-copy-id ...

mirkobrankovic
fuente
1
¿Se instalará la clave en /root/.ssh/authorized_keyslugar de /home/ghost/.ssh/authorized_keys? Acabo de actualizar el procedimiento que estoy haciendo actualmente para instalar una clave pública para un nuevo usuario. Solo busco un mejor método. ¡Gracias!
Realguess
La clave se instalará en el hogar del usuario al que se está conectando de forma remota. Puede usar la opción -i de ssh-copy-id para especificar qué clave desea copiar, pero no puede copiarla en otro directorio con el ssh-copy-id normal.
user2313067
puede especificar a qué usuario va a copiar la clave, si desea iniciar sesión como root que ssh-copy-id root @ host-ip, si desea como fantasma que ssh-copy-id ghost @ host-ip
mirkobrankovic
1
El sistema se configuró para permitir el inicio de sesión solo con clave pública. Como el usuario ghostse creó recientemente, no hay ninguna clave pública disponible para el usuario. Es por eso que primero necesita instalar la clave pública para el usuario, luego ssh-copy-id ghost@host-ipfuncionará. Pero gracias, creo que algunos comandos adicionales en el servidor remoto no serán un gran problema.
realguess
Sí, primero hay que generar pub. clave localmente y que ssh-copi-id al servidor remoto
mirkobrankovic