有没有办法使用 Google Chrome 远程桌面插件在远程连接的计算机之间传输文件?
如果没有,有没有一种简单的方法可以在连接的计算机之间传输文件?
答案1
是的,你可以。截至最近(本周?本月?还是今天刚刚?[这是我第一次看到它]),Chrome 远程桌面已从通过 Chrome 商店下载和启动的独立程序转变为从网站启动的浏览器内应用:https://remotedesktop.google.com。
[2019 年 6 月 27 日测试]
此次更改带来了全新的文件传输功能!登录后,屏幕右侧会出现此菜单:
如果您没有看到,请将鼠标悬停在右侧,直到看到指向左侧的小蓝色箭头,然后单击它,因为此菜单是可隐藏的。
1.从远程下载到本地:
到将文件从远程机器下载到本地机器(主机)单击“下载文件”按钮。它将在远程计算机上打开“下载文件”文件管理器窗口。选择一个文件并单击“打开”。文件通过网络传输,GUI 文件管理器“保存文件”窗口将神奇地在您的本地(主机)计算机上打开。选择一个位置并保存文件。
完成。文件位于您本地计算机上您选择保存它的文件夹中。
2. 从本地上传到远程:
到将文件从本地(主机)计算机上传到远程计算机,点击“上传文件”按钮。它将在本地计算机上打开“打开文件”文件管理器窗口。选择一个文件(错误警告:即使文件已被选中,您也必须用鼠标再次单击该文件,否则这对我来说不起作用) 并点击“打开”。在上面显示的“文件传输”对话框下,您将看到一个“正在上传”指示器和文件传输进度条。完成后,您将在远程桌面屏幕底部看到以下通知:“上传完成。在远程设备的桌面上查找文件。”
完成。该文件位于远程计算机的桌面上。
答案2
这是一个玩笑式的回答,但由于目标和主机之间支持复制和粘贴,因此复制文件的古怪方式没有采取中间云存储的做法是:
- 在源上:使用任何可用的编码器将文件转换为 Base64/UUEncode,以便您可以使用 Ctr+C 复制数据。
- 在目标上:将数据粘贴到文本文件中并使用任何可用的解码器对其进行解码。
基于 Python 的解决方案
首先,在源机器上启动 Python 控制台并输入:
base64data = open('myfile.jpg','rb').read().encode('base64')
open('myfile.txt','w').write(base64data)
接下来,使用文本编辑器打开文件myfile.txt
并复制内容。然后在目标机器上将内容粘贴到名为的新文件中myfile.txt
,并在控制台中输入:
data = open('myfile.txt').read().decode('base64')
open('myfile.jpg','wb').write(data)
这些片段可以提取到脚本中,以避免每次都输入。
基于 GUI 的解决方案(Windows)
如果你没有 Python,或者你的两台机器都运行 Windows,并且你有总指挥官安装的话步骤就比较简单了:
在源上:选择您的文件,然后选择文件>编码文件。
.b64
将在另一个面板中创建相应的内容 - 打开它(F3)并复制内容(Ctr+ a,Ctr+ c)。在目标上:粘贴到带有
.b64
扩展名的新文件中,然后使用文件>解码文件。
另一个替代应用程序是记事本++使用内置的 mimetools 插件进行 base64 编码/解码(插件 -> Mime 工具 > 64 编码/解码)。
命令行解决方案(OSX、Linux、Windows)
OSX 和大多数 Linux 系统通常带有多种控制台 base64 编码器。这应该可以在 ootb 中工作而无需安装任何东西:
## encode to base64
openssl base64 -in myfile.jpg -output myfile.jpg.b64
## OR on some systems `-out` should be used instead of `-output`
openssl base64 -in myfile.jpg -out myfile.jpg.b64
## encode to base64 on Windows (recent versions)
certutil -encode myfile.jpg myencodedfile.jpg.b64
## decode from base64
openssl base64 -d -in myfile.jpg.b64 -output myfile.jpg
## OR on some systems `-out` should be used instead of `-output`
openssl base64 -d -in myfile.jpg.b64 -out myfile.jpg
## decode base64 on Windows
certutil -decode myencodedfile.jpg.b64 myfile.jpg
省略该-output...
部分将会打印到标准输出。
OSX 和 Ubuntu 中都存在的另一个 ootb 实用程序:
## encode to base64
base64 < myfile.jpg > myfile.jpg.b64
## decode from base64 (Linux) (note the lowercase 'd')
base64 -d < myfile.jpg.b64 > myfile.jpg
## decode from base64 (OSX) (note the uppercase 'D')
base64 -D < myfile.jpg.b64 > myfile.jpg
直接传输到剪贴板(避免中间文件)
如果源/目标操作系统上有相应的命令行工具,则可以直接编码到剪贴板。
在 OSX 上有内置的pbcopy
和pbpaste
在 Linux 上(在 xorg 中),有剪辑,在 Windows 上有剪辑程序,这意味着将文件编码到剪贴板可以简化为(例如对于 OSX):
base64 < myfile.jpg | pbcopy
正确的方法...
现在玩笑归玩笑。如果你需要在两台机器之间传输文件(无论你使用什么连接),那么使用 SSH 就可以提供scp
。如果其中一个或两个盒子位于防火墙/路由器后面,则使用跳转服务器(即互联网暴露的服务器,可能是虚拟专用服务器)。您需要从目标框到跳转服务器建立始终在线的链接,配置端口转发,然后通过跳转服务器上的转发端口使用 SCP。在 A->B->C 跳转场景中,您需要在A并在两者上运行 SSH 服务器乙和C。
一旦你有了传出连接,并且转发端口从盒子配置C (如果你以前没有这样做过,这可能会很棘手)你可以通过 SSH 从盒子连接A文件中定义的配置文件~/.ssh/config
类似于:
Host jump
Hostname hostname_C
User username_C
Port portnumber_C
ProxyJump username_B@hostname_B:portnumber_B
完成所有设置后,您可以轻松复制文件/文件夹:
scp -r /some/local/dir jump:remote_dir
或从远程到本地:
scp -r jump:remote_dir/subdir /my/local/machine/path
remote_dir
将相对于用户的家。
注意:这并不涵盖所有步骤,因为这超出了原始问题的范围,但您可以使用例如 Chrome 远程桌面来建立从您的盒子 C 到盒子 B(跳转服务器)的 SSH 链接,然后从盒子 A“透明地”通过 B 连接到 C。
最后,如果您想要一个更好的文本模式 GUI,
scp
那么可以考虑使用 Midnight Commander -mc
(apt install mc
)您可以连接例如左边->外壳链接:在目标框中输入您的用户@IP或者您配置的别名,如上~/.ssh/config
例所示jump
。
使用 Midnight Commander 通过 SSH 传输文件:
答案3
是的。Gabriel Staples 的这个回答回答了这个问题https://superuser.com/a/1453775/146314并且接受的答案应该改为这样。现在可以通过 Chrome 远程桌面传输文件。
这无法完成。作为一种解决方法,您可以随时通过电子邮件将其发送给自己,或者使用 Google Drive/Drop Box 或类似工具。
答案4
要传输文件,只需使用您的 Google Drive。您必须登录 Google 帐户才能使用 Chrome 远程桌面,因此只需打开 Google Drive,将文件放入其中即可。上传后,在远程计算机上打开 Google Drive,并将其从 Google Drive 拉出到您选择的桌面或文件夹!