使用SSH隧道传输文件通常涉及两个主要步骤:设置SSH隧道和使用SCP或SFTP进行文件传输。以下是详细步骤:
打开终端:
创建SSH隧道:
ssh
命令创建一个隧道。假设你要通过远程服务器(例如remote-server.com
)连接到目标服务器(例如target-server.com
),并且目标服务器在端口22
上运行。ssh -L 本地端口:target-server.com:22 user@remote-server.com
解释:
-L 本地端口:target-server.com:22
:将本地端口转发到目标服务器的22端口。user@remote-server.com
:远程服务器的用户名和地址。例如,如果你想将本地的端口12345
转发到target-server.com
的22端口,命令如下:
ssh -L 12345:target-server.com:22 user@remote-server.com
保持隧道连接:
从本地机器传输到目标服务器:
local-file.txt
传输到目标服务器的/home/user/
目录下。scp -P 本地端口 local-file.txt user@localhost:/home/user/
解释:
-P 本地端口
:指定本地端口(即你在SSH隧道中设置的端口)。local-file.txt
:要传输的本地文件。user@localhost
:目标服务器的用户名和地址(因为隧道已经建立,所以使用localhost
)。/home/user/
:目标服务器上的目标目录。从目标服务器传输到本地机器:
remote-file.txt
传输到本地机器的/home/local-user/
目录下。scp -P 本地端口 user@localhost:/home/user/remote-file.txt /home/local-user/
启动SFTP会话:
sftp -P 本地端口 user@localhost
解释:
-P 本地端口
:指定本地端口(即你在SSH隧道中设置的端口)。user@localhost
:目标服务器的用户名和地址(因为隧道已经建立,所以使用localhost
)。在SFTP会话中进行文件传输:
put local-file.txt /home/user/
get remote-file.txt /home/local-user/
解释:
put local-file.txt /home/user/
:将本地文件上传到目标服务器。get remote-file.txt /home/local-user/
:从目标服务器下载文件到本地机器。通过以上步骤,你可以使用SSH隧道安全地传输文件。确保在传输过程中保持SSH隧道连接,直到文件传输完成。