SCP un archivo entre dos servidores

0

Tengo una gota Digital Ocean (SERVIDOR A) que usa una clave SSH y una contraseña para mi cuenta raíz. Creé un usuario adicional y lo agregué a un nuevo grupo de SFTPUsers siguiendo esta guía:

https://www.digitalocean.com/community/questions/how-do-i-restrict-a-user-to-a-specific-directory

También tengo otro servidor en un host compartido (no en Digital Ocean) que tiene archivos de copia de seguridad nocturnos. (SERVIDOR B)

Me gustaría copiar de forma segura estas copias de seguridad cada noche desde el SERVIDOR B a un directorio en mi servidor DO (SERVIDOR A) al que mi usuario de copia de seguridad tiene acceso, y me gustaría hacerlo con un script para que no solicite una contraseña para que pueda ejecutarse. Estoy realmente confundido sobre a dónde ir desde aquí. Encuentro que cuanto más investigo, más me confundo. ¿Genero una clave pública / privada en el SERVIDOR B y luego copio la clave pública en el servidor A? Entonces que pasa?

¿A dónde voy desde aquí en cuanto a poder SCP un archivo desde mi único servidor al servidor digital del océano? Me gustaría hacer esto usando mi nuevo usuario que creé. Realmente agradecería cualquier ayuda / punteros en la dirección correcta. Intenté leer en SSH / public / private keys pero todavía no siento que estoy progresando :(

¡Gracias!

Hipótesis nula
fuente

Respuestas:

0

¿Necesito crear una clave SSH diferente para este usuario? ¿Haría eso en el servidor DO? Ni siquiera puedo iniciar sesión como este nuevo usuario porque dice acceso denegado (clave pública) cuando intento iniciar sesión. Sin embargo, puedo iniciar sesión como root cuando uso esa clave.

Por supuesto, puede usar la misma clave para todo. Sin embargo, sería mejor usar diferentes claves para diferentes usuarios. Por lo tanto, recomendaría generar una clave para un no rootusuario. (Y tal vez no ingrese una frase de contraseña, o de lo contrario tendrá que entender ssh-agent(ver más abajo).) Generaría la clave en el servidor DO y luego agregaría la clave pública ... vea el siguiente paso.

¿Cómo puedo asegurarme de que la gotita permitirá el acceso desde este otro servidor? Leí que puede copiar la clave pública creada en el servidor DO en el directorio .ssh del servidor compartido y luego agregarla a claves_autorizadas. ¿Es eso correcto?

No tiene que copiarlo al ~/.sshdirectorio. Sólo hay que añadirlo a authorized_keysen el ~/.sshdirectorio.

Incluso si la clave se copia, también tendría una contraseña que tendría que escribir, ¿no? ¿Dónde se guarda eso? ¿Una variable de entorno?

Solo si ingresó una frase de contraseña cuando generó su clave. Puede almacenar frases de contraseña utilizando ssh-agent. La ejecución ssh-agentejecutará un proceso en segundo plano que se ocupa de completar la frase de contraseña cuando usted ssh(o scpetc.) ingresa a un servidor diferente, pero solo para las claves que ha ssh-addeditado. También generará algunas líneas como esta:

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-mjHm7nFyhJSh/agent.21838; export SSH_AUTH_SOCK;
SSH_AGENT_PID=21839; export SSH_AGENT_PID;
echo Agent pid 21839;

Estos son comandos de shell. Si los pega en su shell, podrá utilizarlos ssh-agenten ese shell. También puede hacer eval $(ssh-agent)para evaluar automáticamente ssh-agentla salida del shell. Luego lo hace ssh-add(para la .ssh/id_rsaclave predeterminada , o ssh-add path/to/keyingrese la frase de contraseña una vez. En ese terminal ahora podrá sshingresar a otros servidores sin ingresar la frase de contraseña, incluso si generó su clave con una frase de contraseña.

sorber
fuente
Muchas gracias por tomarse el tiempo para responder. Si quiero generar una clave para un usuario no root, ¿solo tengo que iniciar sesión como ese usuario en el cuadro y generar una clave? Ahora, si genero la clave en DO BOX (A), recuerde que mi objetivo es copiar archivos de B a A utilizando el usuario de respaldo que creé en el Servidor A. Para hacer eso, copio la clave pública para mi usuario del servidor A en el Servidor B y anexarlo a claves_autorizadas? Después de eso, ¿funcionaría mi comando SCP? Básicamente, el servidor B necesita la clave pública y el servidor A necesita la clave privada, ¿correcto?
NullHypothesis
Correcto. Por cierto, la clave pública está hecha completamente de caracteres imprimibles normales, por lo que puede copiarla y pegarla en ~/.ssh/authorized_keysel otro servidor.
sneep
¿Quiero darle a este usuario un directorio de inicio? ¿Es un usuario normal? Quiero restringirlos por lo que incluso si alguien comprometido el servidor B, no podían hacer mucho daño
hipótesis nula
Sí, usuario normal. No podría poner nada ~/.ssh/authorized_keyssi no hubiera un directorio de inicio. Puede iniciar sesión de A a B, pero no de B a A, por lo que no debe preocuparse.
sneep
pero para confirmar, ¿copiar la clave pública de A en B me permite ejecutar SCP desde B y copiar un archivo en A?
NullHypothesis