ssh远程端口转发

ssh远程转发的原理:内网主机开了一个程序去连接外网的服务器,一直等待外网的服务器来连接。

应用场景

设备

IP

备注

系统

内网电脑C

192.168.10.129

内网,可访问外网。SSH登陆端口为22。

linux

个人电脑A

动态变化

无公网IP

Linux、win、macOS

服务器B

47.101.62.89

有公网IP

Linux

做这个实验的时候,我用阿里云开了一台按量付费的服务器B(大概1个小时左右0.1元,开一个小时就删了这个服务器),注意服务器B额外开放了322端口,需要在安全组里面放通322端口(安全组有入站规则和出站规则,手动添加一条入站规则和出站规则)。

要实现的目的:

个人电脑能访问内网电脑C

操作步骤:

1.在内网电脑C上,执行下面的命令,自己的22端口,转发到服务器B的422端口上。

格式: ssh -NCfR 0.0.0.0:服务器B开放的某个端口(自定义端口,比如322):连接时用到的地址(比如localhost):要转发的端口(比如要转发内网主机C的22端口) root@服务器B的IP地址

ssh -NCfR 0.0.0.0:322:localhost:22 root@47.101.62.89(公网IP)

PS:经过我的测试localhost那个位置,用其他的不行,就要用localhost

# -f : 表示SSH连接在后台运行

# -C : 表示压缩数据传输

# -N : 用于端口转发,表示建立的SSH只用于端口转发,不能执行远程命令

# -R : 指定远程端口转发

如下图:转发操作:

2.在服务器B上,测试远程连接内网电脑C,执行如下命令,然后输入内网电脑C的密码

ssh root@localhost -p 322

到这里已经完成了把内网主机C的端口转发到外网服务器B了。

3.为了在外网任意地方。都能通过公网IP访问内网主机C,需要修改服务器B的ssh配置文件。实现方法

修改服务器B的ssh配置文件

vim /etc/ssh/sshd_config

#修改以下属性 GatewayPorts yes

然后按esc退到命令行模式。按:wq保存退出。

然后重启服务器B的ssh

systemctl restart ssh

4.查看进程,kill了这个进程就不能继续连了。为了持久化的连接。进行下面的操作

1.设置免密登录服务器B:

生成ssh秘钥:ssh-keygen 回车->回车 生成秘钥 复制秘钥到服务器B ssh-copy-id -i id_rsa.pub root@47.101.62.89

2. 添加定时任务crontab

crontab -e 打开编辑框,插入下面的代码:意思是2分钟一次执行这个任务

*/2 * * * * ssh -fCNR 422:localhost:22 root@47.101.62.89

在内网主机C上执行crontab -e 然后编辑下面的内容,保存。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值