如何通过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,成功。

最后的解决办法如下:

  1. 在本地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上

  2. 新打开终端,通过本地端口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复制文件到指定端口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值