与我用PuTTY登录的会话之间的文件传输


81

我已使用PuTTY登录到远程主机。

将文件从本地计算机传输到我在PuTTY上登录的计算机的命令是什么?

Answers:


70

这可能不是您所要询问的直接答案,但是当我需要通过SSH会话传输文件时,我使用WinSCP,这是一种出色的基于SCP或SFTP的文件传输程序。当然,这假定您使用Windows。


我尝试使用WinScp,但需要在包装盒上运行命令才能获得特权。使用WinScp似乎不可能吗?
蓝天

@ user470184:正确。我通常并行运行Putty和WinSCP。实际上,您可以从WinSCP开始,然后如果需要,可以使用上下文菜单“在Putty中打开此站点”。
Guido Domenici

@GuidoDomenici在这里查看我在WinSCP方面的​​经验:ux.stackexchange.com/q/35936/4424 :-)
corsiKa 2013年

1
blue-sky:要sudo在WinSCP中进行制作,请参见常见问题解答登录后如何更改用户(例如su root)?
Martin Prikryl 2015年

WinSCP未连接到服务器,因为服务器通过私钥使用凭据。WinSCP不支持SSH-1密钥。我正在寻找程序如何支持这种类型的钥匙。你有什么想法?
mishanon

41

  • 点击开始菜单。
  • 点击运行
  • 在打开的框中,键入cmd,然后单击“确定”。
  • 在命令提示符下,输入:

    c:> pscp源文件名userid @服务器名:/ path /目标文件名。

例如:

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

  • 提示时,输入服务器密码。

请享用


14
您可以像这样将其反转:'c:> pscp wrhse@warehouse.cit.cornell.edu:/ mydata / november2012 november2012',以从远程计算机接收文件。
xan

3
pscp是putty软件包的一部分,但是它不在我的路径上,因此我需要先将其添加到我的路径中,然后才能工作。pscp应与腻子exe位于同一位置。在我的情况下c:\ Program Files(x86)\ PuTTY。
弗里克

如果登录后需要切换用户怎么办?sudo su - user
Stevoisiak

1
如果您没有安装整个PuTTY软件包,则需要从chiark.greenend.org.uk/~sgtatham/putty/latest.html
James Newton,

16

PuTTY通常带有一个称为psftp的客户端,您可以利用它来实现此目的。我不相信您可以通过标准的PuTTY客户端来做到这一点(尽管我可能会被证明是错误的)。

PuTTY仅允许您访问操作远程计算机。它没有像坐在远程计算机上那样提供两个文件系统之间的直接链接。


psftp未安装在远程计算机上
蓝天

4
不必如此。仅在本地计算机上。
corsiKa 2011年

这里是一些信息传送文件与PSFTP:pic.dhe.ibm.com/infocenter/tsmscv13/v1r0m0/...
莎丝KANTH

8

无法从PuTTY窗口中打开的SSH会话启动向本地Windows传回文件或从本地Windows传回文件的方法。

尽管PuTTY支持连接共享。

尽管您仍然需要运行兼容的文件传输客户端(pscppsftp),但不需要新的登录名,它会自动(如果启用)利用现有的PuTTY会话。

要启用共享,请参阅:
在PuTTY工具之间共享SSH连接


另一种方法是使用WinSCP(GUI SFTP / SCP客户端)。浏览远程站点时,您可以随时使用“在PuTTY中打开”按钮将SSH终端打开到同一站点。

请参阅PuTTY中的开幕式

通过其他设置,您甚至可以使PuTTY自动导航到使用WinSCP浏览的目录。

请参阅在同一目录中打开PuTTY

(我是WinSCP的作者)


1
马丁,WinSCP是一个爆炸-出色的人。真的,谢谢你:-)
shadowf 2016年


6

如果只有一个文件,则可以使用以下过程(在腻子中):

  1. vi filename.extension(在服务器上的活动文件夹中打开新文件名),
  2. 在腻子上复制+鼠标右键(复制和粘贴),
  3. 编辑并保存。=> vi编辑器命令

使用下一个命令编辑文件权限:chmod u + x filename.extension


对于适合剪贴板的文本文件,这非常好用。有关二进制文件,请参见xxd,但您还需要Windows程序才能将二进制文件转换为十六进制。例如HEXDUMP
James Newton

4

既然您询问了to / from,这是一个适用于“ from”部分的技巧。打开“更改设置...”屏幕,在终端上,然后在“打印机将ANSI打印机输出发送到:”下,选择“常规/纯文本”

现在在远程系统上,在一行上运行此命令:

tput mc5; cat whatever.txt; tput mc4

腻子将通知您文件已保存。这样做是使终端进入打印机模式(tput mc5),将文件打印到屏幕(cat),然后关闭打印机模式(tput mc4)。如果不将所有命令都放在一行上,则屏幕将显示为冻结状态,因为Putty会将所有终端输出保存到后台文件中。

如果您在没有tput命令的更受限的系统上(例如qnap),则可以尝试用printf“ \ x1b [5i”代替tput mc5,而用printf“ \ x1b [4i”代替tput mc4 。

中间的命令只是打印到屏幕上的任何内容。因此,使用tail -n 10000 blah.log下载日志文件的最后10k行,或使用base64编码器将二进制文件映射到可以打印的内容(然后在本地系统上解码):

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

先生,您真是个天才!一段时间以来,我一直在寻找一种通过活动SSH会话传输文件的方法,这是我可以轻松进行的第一个方法。您是否知道是否可以修改此技术以使用基于macOS或Linux的客户端上的终端(即PuTTY以外的终端)工作?
Dominic P

3

如果必须进行私钥验证;在命令提示符(cmd)上运行

第一;

set PATH=C:\PuttySetupLocation

第二;

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

另外,如果您需要其他选项,请查看以下链接。https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter5.html


有什么意义set PATH=C:\PuttySetupLocation?你为什么不C:\PuttySetupLocation\pscp直接做?-即使您要修改PATH,也应该添加新路径,而不是完全重置。
Martin Prikryl

运行set PATH = C:\ PuttySetupLocation不会重置路径,仅将PSCP作为新条目添加到路径。另外,使用C:\ PuttySetupLocation \ pscp是正确的,它可能也有效。
奥马尔塔什彻

1
它确实重置路径。
Martin Prikryl

哪个密码?它不应与任何密码设置相关。
奥马尔塔什彻

什么密码 也许您在输入错字“ password”(而不是“ path”)后立即阅读了我的评论。发布后不久(您的评论之前很久),我已将其修复。
Martin Prikryl

3

看这里:

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

它建议pscp.exe从PuTTY使用,可以在以下位置找到:https : //www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

像FTP这样的直接传输是不可能的,因为会话期间的所有命令都将发送到服务器。


谢谢,即时通讯使用的私钥登录链接似乎并不详细?
蓝天

1
@ user470184如果您过去两年都没有找到方法,可以在以下内容的底部找到一些说明:>本页<
Hawkwing

1

使用腻子传输文件(pscp / plink.exe)

默认的腻子安装提供了多种传输文件的方式。最有可能putty在您的默认路径上,因此您可以直接putty从命令提示符下调用 。如果没有,您可能必须更改环境变量。请参阅此处的说明:https : //it.cornell.edu/managed-servers/transfer-files-using-putt

脚步

  1. 通过键入打开命令提示符 cmd

  2. 要将文件夹从Windows计算机传输到另一台Windows计算机,请 使用(请注意该-r标志,该标志表示文件将以递归方式传输,无需压缩它们): 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. 要将文件从Windows计算机传输到另一台Windows计算机,请 使用: 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. 有时,您可能只plink安装了。plink可以潜在地用于传输文件,但最好仅限于简单的文本文件。二进制文件可能具有未知行为(/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. 要将文件从Linux服务器传输到Windows计算机再传输到Linux计算机,请使用 pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" username@10.15.48.16:/home/username

对于所有这些工作,您需要具有正确的公用/专用密钥。要生成腻子,请参阅:https : //superuser.com/a/1285789/658319


0

这样,在Windows上pscp允许直接上传(无需任何请求(例如,密钥接受)):

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.