我知道我可以使用 sftp user@host ....
但我想要的是从现有会话下载文件。
那是。
ssh 用户@主机...做一些工作...
我遇到的主要问题是所述文件位于服务器的根目录下,因此执行 sftp 命令并不那么简单。
答案1
从您描述的方式来看,您的问题似乎是您无法通过 ssh 以 root 身份登录(可能您使用了某种方式su
或sudo
以 root 身份工作)。
- 如果 root 原则上可以通过 ssh 登录,但您不知道密码,则可以设置 root 的帐户以允许使用您的密钥进行公钥身份验证。
- 如果不可能,请将该文件复制到您登录的帐户可以访问的文件夹(例如您的
$HOME
文件夹),可能需要调整权限并以sftp
或的身份复制scp
。
答案2
你有没有尝试过SCP? 例如:
scp user@host:/path/to/remote-file .
答案3
我不知道为什么它必须是同一个会话,但如果您在 ~/.ssh/config 中使用 ControlMaster 和 ControlPath,则您无需授权您的 scp 连接,因为它在同一个连接中多路复用。这也会加快您与同一主机的连接速度。
答案4
我会按照你的要求做,在你的 ssh 客户端上打开会话日志记录(方法多种多样。根据文件的不同,你可能只需设置一个大的回滚缓冲区即可。),然后对文件进行 base64 编码并将其传输到你的终端。:D
然后,您可以从日志的两端修剪掉多余的位,并使用 base64 解码将其恢复为原始文件。
例如:
base64 < file.to.transfer
然后,在客户端:
base64 -d < trimmed.log.file > destination.file
一些客户端程序内置了与 XMODEM 协议或类似协议几乎相同的方法,但服务器端传输软件的可用性可能比 base64 要低得多,后者包含在我最近使用的大多数 Linux 发行版中。但是,如果您有一个支持它的客户端,它会自动处理截断和解码阶段,这对于大文件来说非常方便。不过,我不知道自从 telnet BBS 时代以来是否有人真正使用过它,所以祝你好运。