我目前知道 SCP 和 SSH。有时我在文件中进行一些工作时,需要将其下载到本地才能进行处理。这会调用:
打印工作目录/路径
获取文件名
启动新的终端窗口并执行
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 以避免输入密码。