本文主要是介绍如何通过SSH建立tunnel经过中转服务器给远程服务器传文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
以下是Linux下的使用,如果在windows下使用ssh请参考windows7下cmd窗口使用ssh命令
情景是公司配置了远程服务器c,但是员工的电脑需要使用员工id密码先连接到一个中转服务网关b
已经尝试过在本地a上使用
ssh -p 22 <b的员工id>@<b的ip>
,然后在中转b上使用
ssh -p 22 <c的username>@<c的ip>
均可以成功跳转到对应的服务器上访问。
但是由于工作需要,要把本地a的文件传给服务器c,直接用scp是不可以的。
- 已经尝试过直接在本地a上scp给服务器b失败,这很容易理解,一般中转服务器不让你上传文件的。
- 尝试过在服务器b上使用scp把文件复制给服务器c,成功。
最后的解决办法如下:
- 在本地a使用以下指令,其中最后一个<SSH hostname>就是中转服务器的ip和用户名,可参考SSH Tunnel扫盲(ssh port forwarding端口转发)
ssh -g -L <local port>:<remote host>:<remote port> <SSH hostname>
写的详细点,比如我要使用本地的41234端口映射到服务器c的22端口,命令如下
ssh -g -L 41234:<c的ip>:22 <b的员工id>@<b的ip>
执行后会显示当前已在服务器b上
-
新打开终端,通过本地端口41234即可向服务器c复制文件,命令如下
scp -P <端口> <本地文件索引> <c的username>@localhost:<服务器c上的目标目录>
示例
scp -P 41234 /lib/aaa/xxx.bin root@localhost:/dev/disk/
其中大写的-P是因为scp默认连接的端口是22端口,如果ssh不是使用标准的22端口则使用-P(P大写)指定,参考scp复制文件到指定端口
这篇关于如何通过SSH建立tunnel经过中转服务器给远程服务器传文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!