如何从 SSH 会话下载文件(不使用 sftp)

如何从 SSH 会话下载文件(不使用 sftp)

我知道我可以使用 sftp user@host ....

但我想要的是从现有会话下载文件。

那是。

ssh 用户@主机...做一些工作...

我遇到的主要问题是所述文件位于服务器的根目录下,因此执行 sftp 命令并不那么简单。

答案1

从您描述的方式来看,您的问题似乎是您无法通过 ssh 以 root 身份登录(可能您使用了某种方式susudo以 root 身份工作)。

  • 如果 root 原则上可以通过 ssh 登录,但您不知道密码,则可以设置 root 的帐户以允许使用您的密钥进行公钥身份验证。
  • 如果不可能,请将该文件复制到您登录的帐户可以访问的文件夹(例如您的$HOME文件夹),可能需要调整权限并以sftp或的身份复制scp

答案2

你有没有尝试过SCP? 例如:

scp user@host:/path/to/remote-file .

答案3

我不知道为什么它必须是同一个会话,但如果您在 ~/.ssh/config 中使用 ControlMaster 和 ControlPath,则您无需授权您的 scp 连接,因为它在同一个连接中多路复用。这也会加快您与同一主机的连接速度。

看一下http://www.linux.com/archive/feed/54498如何设置。

答案4

我会按照你的要求做,在你的 ssh 客户端上打开会话日志记录(方法多种多样。根据文件的不同,你可能只需设置一个大的回滚缓冲区即可。),然后对文件进行 base64 编码并将其传输到你的终端。:D

然后,您可以从日志的两端修剪掉多余的位,并使用 base64 解码将其恢复为原始文件。

例如:

base64 < file.to.transfer

然后,在客户端:

base64 -d < trimmed.log.file > destination.file

一些客户端程序内置了与 XMODEM 协议或类似协议几乎相同的方法,但服务器端传输软件的可用性可能比 base64 要低得多,后者包含在我最近使用的大多数 Linux 发行版中。但是,如果您有一个支持它的客户端,它会自动处理截断和解码阶段,这对于大文件来说非常方便。不过,我不知道自从 telnet BBS 时代以来是否有人真正使用过它,所以祝你好运。

相关内容