使用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隧道连接,直到文件传输完成。