Transferir archivos a / desde la sesión Estoy conectado con PuTTY


82

Estoy conectado a un host remoto usando PuTTY.

¿Cuál es el comando para transferir archivos desde mi máquina local a la máquina en la que estoy conectado en PuTTY?

Respuestas:


71

Probablemente esta no sea una respuesta directa a lo que está preguntando, pero cuando necesito transferir archivos a través de una sesión SSH, uso WinSCP , que es un excelente programa de transferencia de archivos a través de SCP o SFTP. Por supuesto, esto supone que estás en Windows.


Probé WinScp pero necesito ejecutar un comando en el cuadro para obtener privilegios. ¿Esto no parece posible usando WinScp?
blue-sky

@ user470184: correcto. Por lo general, ejecuto Putty y WinSCP uno al lado del otro. De hecho, puede comenzar con WinSCP y luego hay un menú contextual para "abrir este sitio en Putty" si así lo desea.
Guido Domenici

@GuidoDomenici Vea mi experiencia con WinSCP aquí: ux.stackexchange.com/q/35936/4424 :-)
corsiKa

1
blue-sky: Para hacer sudoen WinSCP, consulte las Preguntas frecuentes. ¿Cómo cambio de usuario después de iniciar sesión (por ejemplo, su root)?
Martin Prikryl

WinSCP no se conecta al servidor, porque el servidor usa credenciales por clave privada. WinSCP no es compatible con la clave SSH-1. Estoy buscando un programa que admita ese tipo de clave. ¿Tienes alguna idea?
mishanon

41

  • Haga clic en el menú de inicio.
  • Haga clic en ejecutar
  • En el cuadro abierto, escriba cmd y luego haga clic en Aceptar
  • En el símbolo del sistema, ingrese:

    c:> pscp nombre_archivo_origen id_usuario @ nombre_servidor: / ruta / nombre_archivo_destino.

Por ejemplo:

c:> pscp november2012 wrhse@warehouse.cit.cornell.edu: / mydata / november2012.

  • Cuando se le solicite, ingrese su contraseña para el servidor.

Disfrutar


14
Y puede invertirlo así: 'c:> pscp wrhse@warehouse.cit.cornell.edu: / mydata / november2012 november2012' para recibir archivos de la máquina remota.
xan

3
pscp es parte del paquete de masilla, pero no estaba en mi ruta, así que necesitaba agregarlo a mi ruta antes de que esto funcionara. pscp debe estar en la misma ubicación que el exe de masilla. en mi caso c: \ Archivos de programa (x86) \ PuTTY.
Frec

¿Qué pasa si necesitamos cambiar de usuario después de iniciar sesión? sudo su - user
Stevoisiak

1
Si no instaló todo el paquete PuTTY, deberá descargar el programa pscp por separado de chiark.greenend.org.uk/~sgtatham/putty/latest.html
James Newton

16

PuTTY generalmente viene con un cliente llamado psftp que puede aprovechar para este propósito. No creo que pueda hacerlo a través del cliente PuTTY estándar (aunque se puede demostrar que estoy equivocado en eso).

PuTTY solo le da acceso para manipular la máquina remota. No proporciona un vínculo directo entre los dos sistemas de archivos más de lo que lo hace sentarse en la máquina remota.


psftp no está instalado en la máquina remota
blue-sky

4
No tiene por qué serlo. Solo en su máquina local.
corsiKa

Y aquí hay información para transferir archivos con psftp: pic.dhe.ibm.com/infocenter/tsmscv13/v1r0m0/…
shasi kanth

8

No hay forma de iniciar una transferencia de archivos hacia / desde Windows local desde una sesión SSH abierta en la ventana PuTTY.

Aunque PuTTY admite la conexión compartida.

Si bien aún necesita ejecutar un cliente de transferencia de archivos compatible (el pscpo psftp), no se requiere un nuevo inicio de sesión, automáticamente (si está habilitado) hace uso de una sesión PuTTY existente.

Para habilitar el uso compartido, consulte:
Compartir una conexión SSH entre herramientas PuTTY .


Una forma alternativa es utilizar WinSCP, un cliente GUI SFTP / SCP. Mientras navega por el sitio remoto, puede abrir el terminal SSH en cualquier momento en el mismo sitio usando el botón Abrir en PuTTY .

Consulte Sesión de apertura en PuTTY .

Con una configuración adicional, incluso puede hacer que PuTTY navegue automáticamente al mismo directorio que está navegando con WinSCP.

Consulte Abrir PuTTY en el mismo directorio .

(Soy el autor de WinSCP)


1
Martin, WinSCP es genial, buen trabajo. Y gracias, de verdad :-)
shadowf


6

Si es solo una lima, puede usar el siguiente procedimiento (en masilla):

  1. vi filename.extension (abre un nuevo nombre de archivo en la carpeta activa del servidor),
  2. copiar + clic derecho del mouse mientras está sobre masilla (copiar y pegar),
  3. editar y guardar. => comandos del editor vi

Edite el permiso del archivo con el siguiente comando: chmod u + x filename.extension


Esto funciona increíblemente bien para archivos de texto que quepan en el portapapeles. Para archivos binarios, vea xxd, pero también necesitará un programa de Windows para convertir binario a hexadecimal. por ejemplo, HEXDUMP
James Newton

4

Ya que preguntaste sobre hacia / desde, aquí tienes un truco que funciona para la parte 'desde'. Abra la pantalla 'Cambiar configuración ...', Terminal, y en 'Impresora para enviar la salida de la impresora ANSI a:' seleccione 'Genérico / Solo texto'

Ahora en el sistema remoto, ejecute esto en una línea:

tput mc5; cat whatever.txt; tput mc4

Putty le informará que el archivo se guardó. Lo que está haciendo es poner el terminal en modo de impresora (tput mc5), imprimir el archivo en la pantalla (cat) y luego apagar el modo de impresora (tput mc4). Si no coloca todos los comandos en una línea, la pantalla aparecerá congelada porque Putty está guardando toda la salida del terminal en un archivo en segundo plano.

Si estás en un sistema más limitado que no tiene el comando tput (por ejemplo, un qnap), puedes probar printf "\ x1b [5i" en lugar de tput mc5 y printf "\ x1b [4i" en lugar de tput mc4 .

El comando en el medio es cualquier cosa que se imprima en la pantalla. Así que use tail -n 10000 blah.log para descargar las últimas 10k líneas del archivo de registro, o use un codificador base64 para asignar un archivo binario a algo que pueda imprimir (y luego decodificar en su sistema local):

printf "\x1b[5i"; openssl enc -base64 -in something.zip; printf "\x1b[4i"

¡Usted señor es un genio! He estado buscando una forma de transferir archivos a través de una sesión SSH activa durante un tiempo, y esta es la primera que puedo hacer que funcione fácilmente. ¿Sabe si esta técnica podría modificarse para que funcione utilizando el terminal en un cliente basado en macOS o Linux (es decir, terminales que no sean PuTTY)?
Dominic P

3

Si tiene que hacer una validación de clave privada; en el símbolo del sistema (cmd), ejecute

Primero;

set PATH=C:\PuttySetupLocation

Segundo;

pscp -i C:/MyPrivateKeyFile.ppk C:/MySourceFile.jar ubuntu@55.69.41.155:/home/ubuntu

Además, si necesita opciones adicionales, consulte el siguiente enlace. https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter5.html


¿De qué sirve set PATH=C:\PuttySetupLocation? ¿Por qué no lo haces C:\PuttySetupLocation\pscpdirectamente? - Incluso si desea modificar PATH, debe agregar la nueva ruta, no restablecerla por completo.
Martin Prikryl

La ejecución de set PATH = C: \ PuttySetupLocation no restablece la ruta, solo agrega PSCP a la ruta como una nueva entrada. Además, tiene razón al usar C: \ PuttySetupLocation \ pscp . También puede ser válido.
ÖMER TAŞCI

1
SÍ restablece el camino.
Martin Prikryl

cual contraseña No debe estar relacionado con ninguna configuración de contraseña.
ÖMER TAŞCI

¿Que contraseña? Quizás leíste mi comentario inmediatamente después de que lo publiqué con un error tipográfico de "contraseña" , en lugar de "ruta" . Lo arreglé un segundo después de la publicación (mucho antes de tu comentario).
Martin Prikryl

3

Mira aquí:

http://web.archive.org/web/20170106202838/https://it.cornell.edu/services/managed_servers/howto/file_transfer/fileputty.cfm#puttytrans

Recomienda usar pscp.exePuTTY, que se puede encontrar aquí: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

No es posible una transferencia directa como FTP, porque todos los comandos durante su sesión se envían al servidor.


Gracias, ¿estoy iniciando sesión con una clave privada cuyo enlace abolve no parece detallar?
blue-sky

1
@ user470184 Si logró pasar dos años sin averiguar cómo, algunas instrucciones sobre cómo se puede hacer esto se pueden encontrar en la parte inferior de: > esta página <
Hawkwing

1

Transferencia de archivos con Putty (pscp / plink.exe)

La instalación de masilla predeterminada proporciona varias formas de transferir archivos. Lo más probable puttyes que esté en su ruta predeterminada, por lo que puede llamar directamente puttydesde el símbolo del sistema. Si no es así, puede que tenga que cambiar sus variables ambientales. Consulte las instrucciones aquí: https://it.cornell.edu/managed-servers/transfer-files-using-putt

Pasos

  1. Abra el símbolo del sistema escribiendo cmd

  2. Para transferir carpetas de su computadora con Windows a otra computadora con Windows, use (observe la -rbandera, que indica que los archivos se transferirán de forma recursiva, no es necesario que los comprima): pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" ipython_user@10.15.48.54:/"C:/Program Files (x86)/"

  3. Para transferir archivos desde su computadora con Windows a otra computadora con Windows, use: pscp -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" ipython_user@10.15.48.54:/"C:/Program Files (x86)/"

  4. A veces, es posible que solo haya plinkinstalado. plinkpotencialmente se puede usar para transferir archivos, pero es mejor restringirlo a archivos de texto simples. Puede tener un comportamiento desconocido con archivos binarios ( /superuser/1289455/create-text-file-on-remote-machine-using-plink-putty-with-contents-of-windows-lo ): plink -i C:/Users/username/.ssh/id_rsa.ppk user@host <localfile "cat >hostfile"

  5. Para transferir archivos desde un servidor Linux a una computadora con Windows a una computadora con Linux, use pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" username@10.15.48.16:/home/username

Para que todo esto funcione, debe tener la clave pública / privada adecuada. Para generar eso para masilla, consulte: https://superuser.com/a/1285789/658319


0

De esa manera, en Windows, pscp permite una carga directamente (sin ninguna solicitud, por ejemplo, aceptación de clave):

pscp.exe -scp -pw 'my_pw' -v -i my.ppk -l root -batch -sshlog logfile19.txt -hostkey ba:2e:4d:12:68:82:19:a1:d2:22:bc:12:c2:1a:44:a7 hallo4.txt root@10.10.10.10:/srv/www/htdocs/xml_parser/hallo4.txt

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.