不使用 SCP 而通过 SSH 复制文件?

不使用 SCP 而通过 SSH 复制文件?

我目前知道 SCP 和 SSH。有时我在文件中进行一些工作时,需要将其下载到本地才能进行处理。这会调用:

  1. 打印工作目录/路径

  2. 获取文件名

  3. 启动新的终端窗口并执行scp myName@host:/Path/to/file/fileName.someExt ~/MyLocalPath

这很管用,但很麻烦。有没有一种简单的方法可以通过 SSH 从远程服务器复制文件,而无需使用上述步骤?

编辑:我正在寻找一种方法,当我被移入框中时,可以从命令行传输文件。这样我就可以运行命令,而不仅仅是复制文件。

答案1

您可以使用保险丝应用程序将远程文件挂载到本地文件系统。然后您可以直接处理这些文件。当您更改它们时,它们将在远程端自动更改。

首先确保您已经fuse加载或内置了内核模块。

然后你可以使用SSHFS,这是一个独立的应用程序:

sshfs user@hostname: mountpoint # to mount to mountpoint
fusermount -u mountpoint # to unmount

或者,您可以使用垂直起降系统。如果您使用的是桌面,只需在文件管理器中输入以下内容(或gvfs-mount在命令行中使用):

sftp://user@hostname/

文件系统将被挂载到

$HOME/.gvfs/sftp for user on hostname

但是如果你不在桌面上,你必须先启动 D-Bus 会话才能使用gvfs-mount

$ dbus-launch 
No protocol specified
DBUS_SESSION_BUS_ADDRESS=XXXXXX
DBUS_SESSION_BUS_PID=YYYY
$ export DBUS_SESSION_BUS_ADDRESS=XXXXXX # copy value from above

您可以通过您提供的 shell 脚本自动执行上述操作 (!)。

答案2

我不知道任何本机方法,但有一个补丁“ssh-xfer”:http://matt.ucc.asn.au/ssh-xfer/

ssh-xfer 是一种将文件从远程主机传输到本地计算机的黑客但方便的方法。首先,您需要在本地计算机上运行稍加修改的 SSH 身份验证代理程序。OpenSSH 和 PuTTY 都有补丁可用...

我自己还没有尝试过,所以这里不作保证。看来你必须在远程主机上安装 ssh-xfer,所以如果你不是这台机器的所有者(shell 帐户等),那么这可能行不通。

答案3

知道这已经过时了,但您提到由于防火墙而无法scp返回。如果您可以使用 ssh 远程转发,这个问题很容易解决?类似的东西将成为您的 ssh 命令。ssh -R 22223:localhost:22 [email protected]

然后,你可以使用以下命令 scp 回到端口 22223 上的原始服务器 scp -P 22223 test/a user@localhost:~

在远程主机上,您需要将 /etc/ssh/sshd_config 设置为AllowTcpForwarding yes(通常是这样,但并非总是如此)。将以下内容添加到 ~/.ssh/config 也可能会有所帮助

Host homecomputer
Port 22223
User username
HostName localhost

scp然后,无论ssh是否指定端口,您都可以发送回内容。如果您还没有这样做,您可能还想研究无密码 ssh 以避免输入密码。

相关内容