SCP inverso sobre conexión SSH

17

A menudo necesito algún archivo de algún servidor cuando estoy en mi computadora portátil. Pero si no sé dónde está ese archivo, tengo que sshingresar al servidor, mirar alrededor exit, y luego scp server:file .. Si estoy trabajando con mi computadora de escritorio y mi servidor, los cuales tienen IP estáticas, puedo simplemente SCP el archivo en reversa ( scp desktop:~ file), pero no puedo hacer eso para mi computadora portátil. ¿Hay alguna manera agradable de SCP un archivo al revés a través de una conexión SSH? ¿Para que la computadora con la que me conecto con SSH envíe un archivo al cliente?

Pavpanchekha
fuente
¿Por qué no usar mDNS?
Ignacio Vazquez-Abrams
1
Creo que esta pregunta ya se ha respondido correctamente aquí: unix.stackexchange.com/a/2869
shellster

Respuestas:

20

Esto sería mucho más fácil con SFTP, que es una extensión de SSH que admite operaciones de archivos más complejas que SCP. Prácticamente todas las distribuciones modernas de Unix y Linux lo admiten. Para usarlo, simplemente ejecute este comando para conectarse al servidor:

sftp server

Luego puede usar los comandos lsy cdpara navegar y encontrar el archivo que está buscando. Una vez que lo haya encontrado, use el getcomando para descargarlo. Por ejemplo, para descargar file.txten su directorio de trabajo actual en el servidor a su directorio de trabajo actual en su máquina local, simplemente ejecute:

get file.txt

Para descargar /home/pavpanchekha/textfiles/file.txten el servidor ~/textfiles/en su máquina local, en su lugar, ejecute:

get /home/pavpanchekha/textfiles/file.txt ~/textfiles/

Por el contrario, también puede cargar archivos de esta manera. Para cargar file.txtdesde su directorio de trabajo actual local al directorio de trabajo actual del servidor, escriba:

put file.txt

También puede usar rutas completas para cada uno como puede con get:

put ~/textfiles/file.txt /home/pavpanchekha/textfiles/file.txt

Para obtener una lista completa de los comandos SFTP disponibles, simplemente ejecute helpla sftp>solicitud.

Parches
fuente
1
Esto es genial, gracias. ¿Hay alguna forma de iniciar uno a la inversa si ya estoy en una conexión SSH? De lo contrario, me encuentro en algún lugar, dándome cuenta de que quiero transferir un archivo, cerrando la conexión SSH, haciendo una conexión SFTP, cerrando eso y volviendo a SSH.
Pavpanchekha
2
@pav: SSH_CLIENTla variable de entorno contiene la dirección IP del host de conexión, entre otra información. Puede usar eso para crear un alias de shell para que SFTP vuelva fácilmente al host de origen. Simplemente agregue esta línea al ~/.bashrcservidor: alias sftpback="sftp $(echo $SSH_CLIENT | awk '{print $1}')" luego desconecte y vuelva a conectar desde SSH para que el cambio surta efecto, o ejecútelo como si fuera un comando para que surta efecto de inmediato. A partir de ahí, puede sftpbackvolver a ejecutar SFTP al cliente desde el que se está conectando, independientemente de cuál sea.
Parches
¡Esto es lo mejor! Gracias por salvarme de NANO (edición de archivos en línea), hace que el proceso sea tan simple.
Mohsin el
0

El administrador de archivos de consola Midnight Commander (mc) tiene un sistema VFS que permite la conexión SFTP / administración de archivos a servidores remotos. También se ejecuta en Cygwin en Windows. La interfaz predeterminada muestra dos paneles independientes; podríamos abrir el directorio remoto SFTP en uno de ellos y transferir archivos a / desde el otro panel fácilmente. Incluye un editor / visor de archivos (mcedit) con resaltado de sintaxis.

Fjor
fuente