I'm logged into a remote host using PuTTY.
What is the command to transfer files from my local machine to the machine I'm logged into on PuTTY?
I'm logged into a remote host using PuTTY.
What is the command to transfer files from my local machine to the machine I'm logged into on PuTTY?
This is probably not a direct answer to what you're asking, but when I need to transfer files over a SSH session I use WinSCP, which is an excellent file transfer program over SCP or SFTP. Of course this assumes you're on Windows.
sudo
in WinSCP, see FAQ How do I change user after login (e.g. su root)? –
Dearborn Advanced >> SSH
---- set protocol version to 1. Then set the key in Advanced >> SSH >> Authentication
–
Herriott c:>pscp source_file_name userid@server_name:/path/destination_file_name.
c:>pscp november2012 [email protected]:/mydata/november2012.
Enjoy
sudo su - user
–
Ossicle pscp
with the ssh-keygen
to bypass the password? thanks in advance –
Fawne server_name
with the server IP
if you're getting an error reading: ssh_init: Host does not exist
; something like: pscp src_fname [email protected]:dst_fname
. –
Deuteragonist PuTTY usually comes with a client called psftp which you can leverage for this purpose. I don't believe you can do it through the standard PuTTY client (although I may be proven wrong on that).
PuTTY only gives you access to manipulate the remote machine. It doesn't provide a direct link between the two file systems any more than sitting down at the remote machine does.
You can also download psftp.exe from:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
When you run it you type:
open "server name"
Then:
put "file name"
(Type help to get a full list of commands.)
You can also type get <file name>
to download files from a remote machine to the local machine.
There's no way to initiate a file transfer back to/from local Windows from a SSH session opened in PuTTY window.
Though PuTTY supports connection-sharing.
While you still need to run a compatible file transfer client (the pscp
or psftp
), no new login is required, it automatically (if enabled) makes use of an existing PuTTY session.
To enable the sharing see:
Sharing an SSH connection between PuTTY tools.
Alternative way is to use WinSCP, a GUI SFTP/SCP client. While you browse the remote site, you can anytime open SSH terminal to the same site using Open in PuTTY button.
With an additional setup, you can even make PuTTY automatically navigate to the same directory you are browsing with WinSCP.
See Opening PuTTY in the Same Directory.
(I'm the author of WinSCP)
Since you asked about to/from, here's a trick that works for the 'from' part. Open the 'Change settings...' screen, Terminal, and under 'Printer to send ANSI printer output to:' select 'Generic / Text Only'
Now on the remote system, run this on one line:
tput mc5; cat whatever.txt; tput mc4
Putty will inform you that the file was saved. What this is doing is putting the terminal into printer mode (tput mc5), printing the file to the screen (cat), and then turning off printer mode (tput mc4). If you don't put all the commands on one line, the screen will appear frozen because Putty is saving all terminal output to a file in the background.
If you're on a more limited system that doesn't have the tput command (e.g. a qnap), you can try printf "\x1b[5i" instead of tput mc5, and printf "\x1b[4i" instead of tput mc4.
The command in the middle is just anything that prints to the screen. So use tail -n 10000 blah.log to download the last 10k lines of the log file, or use a base64 encoder to map a binary file to something you can print (and then decode on your local system):
printf "\x1b[5i"; openssl enc -base64 -in something.zip; printf "\x1b[4i"
If it is only one file, you can use following procedure (in putty):
Edit file permission with next command: chmod u+x filename.extension
Look here:
It recommends using pscp.exe
from PuTTY, which can be found here: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
A direct transfer like FTP is not possible, because all commands during your session are send to the server.
If you have to do private key validation; at Command Prompt(cmd), run
First;
set PATH=C:\PuttySetupLocation
Second;
pscp -i C:/MyPrivateKeyFile.ppk C:/MySourceFile.jar [email protected]:/home/ubuntu
Also, if you need extra options look at the following link. https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter5.html
set PATH=C:\PuttySetupLocation
? Why don't you do C:\PuttySetupLocation\pscp
directly? - Even if you want to modify PATH
, you should add the new path, not reset it completely. –
Dearborn Transferring files with Putty (pscp/plink.exe)
The default putty installation provides multiple ways to transfer files.
Most likely putty
is on your default path, so you can directly call
putty
from the command prompt. If it doesnt, you may have to change your
environmental variables. See instructions here:
https://it.cornell.edu/managed-servers/transfer-files-using-putt
Steps
Open command prompt by typing cmd
To transfer folders from your Windows computer to another Windows computer
use (notice the -r
flag, which indicates that the files will be
transferred recursively, no need to zip them up):
pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" [email protected]:/"C:/Program Files (x86)/"
To transfer files from your Windows computer to another Windows computer
use:
pscp -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" [email protected]:/"C:/Program Files (x86)/"
Sometimes, you may only have plink
installed. plink
can potentially
be used to transfer files, but its best restricted to simple text files. It
may have unknown behavior with binary files (https://superuser.com/questions/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"
To transfer files from a linux server to a Windows computer to a Linux
computer use
pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" [email protected]:/home/username
For all these to work, you need to have the proper public/private key. To generate that for putty see: https://superuser.com/a/1285789/658319
Since you asked about to/from, here's a trick that works for the 'to' part.
On the local computer:
On the SSH session:
nano myfile.b64
From the command line:
base64 -d myfile.b64 > myfile.zip
unzip myfile.zip
(or whatever you need to do with this file)File is now transferred. Check the file size, checksum tools, etc. as needed to convince yourself that the file is an accurate copy, then delete the temporary b64
.
In that way on windows pscp allows an upload directly (without any request for e.g. key-accepting):
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 [email protected]:/srv/www/htdocs/xml_parser/hallo4.txt
Same everyday problem.
I just created a simple vc project to solve this problem.
It copies the file as Base64 encoded data directly to the clipboard, and then this can be pasted into the PuTTY console and decoded on the remote side.
This solution is for relatively small files (relative to the connection speed to your remote console).
Download clip_b64.exe
and place it in the SendTo folder (or a .lnk
shortcut to it). To open this folder, in the address bar of the explorer, enter shell:sendto
or %appdata%\Microsoft\Windows\SendTo
.
You may need to install VC 2017 redist to run it, or use the statically linked clip_b64s.exe
execution.
In the File Explorer, right-click the file you are transferring to open the context menu, then go to the "Send To" section and select Clip_B64
from the list.
Run the shell command base64 -d > file-name-you-want
and right-click in the console (or press Shift + Insert
) to place the clipboard content in it, and then press Ctrl + D
to finish.
voila
stty size
helps to find out the size in Linux). Then "Copy All to the Clipboard" and paste it on the host base64 -d
from the cygwin kit. clear; base64 -w $(stty size | cut -d\ -f2) < file-to-transfer; read
–
Holler @powershell -executionpolicy bypass -command "[Convert]::ToBase64String([IO.File]::ReadAllBytes('%1'))" | clip
+ If you like the Send To solution, you can use my WinSCP SFTP/SCP client, which adds a "Upload" command to the Send To menu. –
Dearborn © 2022 - 2024 — McMap. All rights reserved.