¿Usar SCP o SFTP con mi archivo de configuración ssh?

44

Quizás mi google-foo me está fallando aquí ... Me gustaría conectar y cargar un archivo de volcado mysql a través de la terminal usando SFTP o SCP a mi servidor remoto usando mi archivo de configuración ssh. Según la documentación que he encontrado, debería poder hacer esto:

sftp -F db.sql.gz [email protected] /tmp

También he cansado el alias en mi configuración:

sftp -F db.sql.gz myalias /tmp

Cuando hago los dos anteriores, simplemente obtengo una impresión de los posibles comandos, -Fsiendo uno de ellos.

Ya puedo conectarme a través de ssh usando el acceso directo en mi configuración local muy bien, así que sé que funciona:

ssh myalias

** Nota: Me estoy conectando usando un par de claves privada / pública, así que nunca necesito ingresar una contraseña. El par de claves tiene una frase de contraseña asociada, pero OS X Keychain lo recordó la primera vez que me conecté.

... así que no estoy seguro de lo que estoy haciendo mal.

Danny Englander
fuente

Respuestas:

46
  1. Del texto de ayuda: " ... [-F ssh_config] ..."

    De acuerdo con lo anterior, -Fespera un argumento: ruta a un archivo de configuración de OpenSSH, ~/.ssh/configo similar. Pero en su lugar, le está dando un volcado SQL comprimido.

    Como plain ssh myaliasya está funcionando, ni siquiera necesita la -Fopción aquí. Solo sftp myaliasse conectaría al servidor.

  2. Sin embargo, el sftpcliente OpenSSH no admite la carga de archivos como lo está intentando; solo puede descargar archivos (usando la sintaxis host:path) o trabajar en modo interactivo. Para cargar, debe usar el modo interactivo ...

    $ sftp myalias
    sftp> cd /tmp
    sftp> put db.sql.gz
    

    ... o la scpherramienta:

    scp db.sql.gz myalias:/tmp
    

    o

    scp db.sql.gz [email protected]:/tmp
    

(sftp tiene un modo por lotes en el que puede leer comandos de un archivo, usando -b, pero es más fácil de usar scppara cargas individuales).

También hay otros clientes SFTP: lftp es bueno para uso interactivo, mientras que curl puede ser más fácil de automatizar. Para las copias de seguridad y demás, también puede usar rsync (que ejecuta su propio protocolo pero aún dentro de SSH).

Gravedad
fuente
wow esto es perfecto, funcionó genial! Me estoy familiarizando con el terminal, así que esto será muy útil en el futuro.
Danny Englander
0

Problema causado por la configuración de ForwardAgent como a continuación,

Host dockervm
   HostName x.x.x.x
   User root
   Preferredauthentications publickey
   ForwardAgent yes

Mi caso, se debió a que 'ForwardAgent' en la configuración ssh causó que el scp se bloqueara. Una vez que lo comenté, funcionó para mí.

Además, podría tener una copia del archivo con la línea ForwardAgent comentada y usar scp -F para que funcione.

MohanBabu
fuente