Agregue varias claves SSH a un nuevo servidor

Agregue varias claves SSH a un nuevo servidor

Sé que puedo hacer lo siguiente para copiar una clave SSH

ssh-copy-id [email protected]

pero cuando implemento un nuevo servidor, necesito autorizarle varias claves SSH.¿Existe alguna forma de facilitar la autorización de varias claves SSH?

Respuesta1

Al leer la página de manual de ssh-copy-id, parece que debería copiar todas las claves del agente ssh que no se aceptan para iniciar sesión. Entonces, cargue todos los pares de claves en ssh-agent usando ssh-addy úselos ssh-copy-iddespués de eso.

Si eso no funciona, puedes intentar especificar las claves para ssh-copy-id:

for i in ~/.ssh/*.pub; do
  ssh-copy-id -i $i user@host
done

Si eso todavía no funciona para usted, tal vez eche un vistazo a algo como ansible:

# sshkeys.yml
---
- hosts: all
  remote_user: foo
  tasks:
  - authorized_key:
      user: foo
      key: '{{lookup("file", item)}}'
    with_items:
    - id_rsa.pub
    - id_rsa_alternate.pub

Usar como:

ansible-playbook -i remote.host.com, -k sshkeys.yml

Asegúrese de leer más sobre ansible si elige seguir esta ruta.

Respuesta2

INTRODUCCIÓN

De esta manera, supera con creces la identificación de copia de ssh, ya que puede copiar las claves a cualquier usuario, para un servidor ssh con cualquier puerto, no solo el 22. Ah, y puede tener varias claves en su autorizado_keys.org que se agregarán al archivo autorizado_keys. en el servidor. Asegúrese de que autorizado_keys.org tenga una clave pública ssh por línea.

Hay muchas maneras de construir estas líneas a tu gusto. Sugiero no olvidar nunca este cat | ssh catmétodo ni ningún método similar echo | ssh ssh cat, ya que son perfectos para escribir en servidores remotos. cat SOMETHING | ssh SERVER "cat - > REMOTEFILE"o puedes usar echo así, echo "SOMETHING" | ssh SERVER "cat - > REMOTEFILE" estos son métodos perfectos para leer algo localmente y luego escribirlo o agregarlo en otro servidor. Escríbelo así cat - > REMOTEFILEo añádelo asícat - >> REMOTEFILE

LAS RESPUESTAS

cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"

o

cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"

Además, si tienes la clave ssh (una clave ssh):

cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"

o

cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"

Eso debería ser suficiente para que todo tenga sentido.

MÁS INFORMACIÓN

NOTA: Lea mis comentarios a continuación sobre el hecho de que no está limitado a usar "root". Aquí puedes ver que todas sus partes son modificables:

[input of ssh keys or keys (as long as new line sepearted)] | ssh -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"

PRIMA:digamos que el servidor ssh no permite inicios de sesión con contraseña y solo permite claves SSH, pero desea informarle sobre más claves.

  • [input of ssh keys or keys (as long as new line sepearted)] | ssh -i PRIVATE -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"
  • [entrada de claves ssh o claves (siempre que haya una nueva línea separada)]: esto puede ser un gato de un archivo con 1 o más claves públicas siempre que estén separadas por una nueva línea o un eco de una clave pública completa (o muchas claves públicas, siempre y cuando estén separadas por nuevas líneas; puede usar "echo -e 'line1\nline2'" para separar nuevas líneas con echo).
  • PRIVADO: si su servidor ssh solo permite el ingreso de una determinada clave, porque solo tiene configurada la autenticación de clave ssh y tiene su clave pública. luego especifique la clave privada de esa clave pública
  • USUARIO: el usuario al que se desea conectar y editar su clave. Si te conectas como root (ejemplo:[correo electrónico protegido]), puede agregar las claves de cualquier persona "cat - >> /home/anyuser/.ssh/authorized_keys" o puede agregar las claves raíz "cat - >> /root/.ssh/autorized_keys". Sin embargo, si se conecta como usuario1, solo podrá cambiar las claves del usuario1 "cat - >> /home/user1/.ssh/authorized_keys" o más simplemente "cat - >> ~/.ssh/authorized_keys" (esta última funciona para cualquier usuario).
  • SERVIDOR: el servidor al que desea conectarse. En este caso es server.com
  • PUERTO: el puerto del servidor SSH aceptado en el servidor. Por lo general, es el puerto 22. Tenga en cuenta que si es el puerto 22, puede omitir "-p 22", ya que es el valor predeterminado.
  • CLAVE AUTORIZADA: esta es la ubicación de las claves_autorizadas. Cubrí esto en el punto USUARIO. Este será "/root/.ssh/authorized_keys" o "/home/user1/.ssh/authorized_keys" o "~/.ssh/authorized_keys"

información relacionada