通过 ssh 从远程获取文件,只需简单的“获取文件”?

通过 ssh 从远程获取文件,只需简单的“获取文件”?

有没有办法从通过 ssh 连接的远程服务器获取文件,只需get file在 ssh 会话中运行命令即可?有没有方法或预先存在的工具可以做到这一点?将路径复制并粘贴到另一个终端的 sftp 命令中很慢,因此最好有像这样的快速方法。

答案1

如果您可以通过 SSH 连接到原始客户端主机,则可以使用该scp命令复制文件。示例会话可能如下所示。

barry@earth:~$ ssh pi@raspberrypi
pi@raspberrypi:~$ scp secrets.txt barry@earth:secrets.txt
pi@raspberrypi:~$ exit
barry@earth:~$ ls secrets.txt
secrets.txt
barry@earth:~$

当然,由于您似乎关心速度和简便性,您可以使用别名或其他东西来做一些花哨的事情,将调用包装scp成一些令人难忘的东西。

答案2

没有。SSH 没有像 RDP 那样的“客户端文件系统访问”通道。

不过,可能有些终端内置了对古老 BBS 文件传输协议(如 Xmodem/Zmodem)的支持(超级终端就是其中之一,但它不是一个很好的终端仿真器;我认为有支持 Xmodem 的 PuTTY 分支)。sz在服务器上运行该命令将启动文件传输在航站楼,终端会识别它并询问您将文件保存在哪里。

可能有一个自定义get命令可以连接回客户端计算机(通过另一个 SSH 会话)并且上传将文件从远程系统传输到本地系统,例如通过从 $SSH_CONNECTION 获取您的 IP 地址或使用准备好的“远程转发”-R隧道,但作为通用解决方案,这并不十分方便。(它在特定环境中有效,例如您自己的个人系统,但在通过 SSH 连接到各种随机客户服务器时无效。)

不要忘记sftpLinux 上的客户端支持远程路径的制表符补全。您可能更喜欢lftp,这是另一个 SFTP 客户端,它具有一些方便的功能,例如“edit”命令(它会自动获取文件、运行本地编辑器,然后将其放回)。

涉及(SFTP 作为文件系统)的不同工作流程sshfs可能是一种解决方案。例如,如果您经常在本地使用 SFTP 文件只是为了编辑它们并将它们放回原处,那么可以通过直接通过 sshfs 挂载编辑文件来代替。(或者,当然,在本地编辑所有内容,然后仅通过 Git 部署到服务器...)

您的 Linux 桌面环境可能在图形文件管理器中使用 URL 支持 SFTP sftp://,以便您可以直接导航到所需的文件、为该位置添加书签等。(在 GNOME 中甚至可以在“当前位置”启动交互式 SSH 终端。)

在个人系统之间,也可以使用 NFS(双向 - 在本地编辑服务器文件,并让服务器将文件复制回客户端)。例如,在我的个人环境中,我已/n/<hostname>在所有机器上设置了自动 NFS 安装到主目录,因此我只需将cp foo /n/laptop它显示在笔记本电脑的主目录中即可。(在公司环境中不起作用,但想想很有趣。)

(后者实际上类似于 RDP 的文件重定向的工作方式 - 如果您通过 RDP 进入服务器,则可以访问\\tsclient\C通向客户端 C:驱动器的特殊网络共享,并搭载 RDP 连接。不幸的是,SSH 中没有这样的东西。)

答案3

我还想知道为什么 SSH 缺少一些内置文件传输功能。

如果我需要对相当小的文件进行这样的操作,我会怎么做(在某些情况下无法使用 scp 或 sftp):

我将文件传输到 base64:

base64 < 文件

(复制看似垃圾的文本)

然后,在另一个终端、另一台机器上:

base64-d > 文件

(粘贴上面的编码内容)

然后:ctrl-d

完毕。

我有该文件的副本。


当然,也可以使用其他编码,但 base64 足够紧凑,可以容忍行尾差异、空格和字符集、复制粘贴伪影等。

它确实有效。

答案4

真正的绝望和更多的工作:netcat 或 nc 特别是 -c、
-e name、-K keyfile、-o staplefile、-R cafile、-T option 和 -Z peercertfile。来自 manpage 的示例:
nc localhost 25 << EOF
HELO host.example.com
MAIL FROM:[电子邮件保护]
收件地址:[电子邮件保护]
DATA 电子邮件
正文
。.QUIT
EOF

相关内容