Hay dos máquinas Linux, A y B. Las secuencias de comandos que se ejecutan en A necesitan poder SSH en B. Por lo tanto, A genera una clave pública (probablemente ssh-keygen
generada id_rsa.pub
) y luego usa su clave privada respectiva (nuevamente, probablemente id_rsa
) para hacer esa conexión SSH.
Si algo de lo que he dicho anteriormente es incorrecto o está equivocado, ¡comience por corregirme!
Suponiendo que estoy más o menos en el objetivo:
- ¿Cómo “da” a B su clave pública (
id_rsa.pub
)? ¿Tiene que ser un proceso manual o puede ser automatizado? Si es manual, ¿cuál es el proceso? Si está automatizado, ¿cuál es el comando? Cuando B "obtiene" esta clave pública, ¿a dónde va o se almacena? - Al iniciar la conexión SSH a B, ¿cómo “usa” su clave privada (
id_rsa
) como parte de esa conexión?
linux
ssh
public-key-encryption
usuario3178622
fuente
fuente
Respuestas:
ssh-keygen
genera las claves públicas y privadas, que inicialmente residen solo localmente. Dar la clave pública a otro host es algo que el usuario necesitaría hacer manualmente, ya sea enviándolo a alguien responsable del servidor B o si tiene una cuenta con una contraseña, puede iniciar sesión y ponerla allí usted mismo. Para permitir el inicio de sesión sin contraseña en el servidor B, necesitará agregar su clave pública al archivo ~ / .ssh / Authorised_keys en el servidor B (una clave pública por línea, puede haber cualquier cantidad de claves en este archivo). Hay un comando de Linuxssh-copy-id
que copiará la ID por usted y la colocará en el archivo.Por defecto, ssh usará el archivo ~ / .ssh / id_XXX como su clave privada. XXX puede ser rsa, dsa o cualquier protocolo para el que se generó una clave. IIRC, dsa es viejo y no debe usarse. Si desea usar una clave privada diferente, puede especificarla en su comando ssh usando
-i
. Siempre que la clave privada que se utilice coincida con una clave pública en la máquina remota (en el archivo Author_keys para la cuenta del usuario en la que está iniciando sesión), no necesitará proporcionar una contraseña.fuente
ssh-keygen
se ejecuta, ¿mencionas que las dos claves "residen solo localmente"? ¿¡¿Dónde?!? Como en, ¿a qué carpeta puedo navegar y verid_rsa.pub
yid_rsa
? (2) Pensé quessh-add
era el comando para agregar una clave públicaauthorized_keys
, ¿no? ¿Cuál es la diferencia entressh-copy-id
yssh-add
? ¡Gracias de nuevo!~/.ssh/id_rsa
re '2', ssh-add no es para agregar a claves_autorizadas, es para agregar a un llavero ... No he usado ssh -aunque sí. ssh-add tiene que ver con permitirle no tener que ingresar una frase clave cada vez que usa una clave que requiere una frase clave. Entonces, si sus claves ssh no requieren una frase clave, entonces supongo que no hay ninguna razón para usar ssh-add y creo que aún necesitaría usar ssh-copy-id o hacer el manual copiando la clave pública en authorized_keysSi
pero B necesita que la clave pública de A aparezca en el archivo de claves autorizadas de B para que A pueda conectarse a B
también puede eliminar id_rsa.pub y ssh en B y seguirá funcionando, porque la clave pública se genera fresca con cada conexión ssh y no se almacena en ningún id_rsa.pub
manual - algo como
a partir de una-
o incluso más manualmente, para desglosar el comando
A $
cat id_rsa.pub | ssh user@host 'cat>~/a.a'
luego en B, asegúrese de que ~ / .ssh existe y luego haga
cat a.a >> ~/.ssh/authorized_keys
y puede colocar las claves_autorizadas de B antes y después para asegurarse de que la clave aparezca en la lista.
O bien, puede enviar un correo electrónico a id_rsa.pub a una cuenta de correo electrónico, luego, desde B, B puede consultar el correo electrónico y agregar el contenido de id_rsa.pub a su archivo de claves autorizadas
automáticamente
El comando ssh-copy-id
Debe poder ingresar, por lo que necesita acceso con contraseña
En lugar de hacer ssh user @ host, hace ssh-copy-id user @ host y se le solicita una contraseña, la ingresa, ya está, copiará la clave pública. Y la próxima vez que haga ssh user @ host, usará la clave.
B's ~ / .ssh / certified_keys
bueno, no sé mucho al respecto, pero lo que está cifrado con una clave puede descifrarse con la otra clave, e identificarse es un poco diferente al envío de datos ... y puede haber algo sobre una clave temporal también.
fuente