美文网首页
SSH 隧道转发实现内外网主机远程调试

SSH 隧道转发实现内外网主机远程调试

作者: 望江樵夫 | 来源:发表于2022-01-19 21:08 被阅读0次

A端:内网设备
B端:转发设备
C端:外网设备

参数介绍

反向代理

ssh -fCNR

正向代理

ssh -fCNL
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口

A端配置

设置方法

A上设置反向代理
建立B端到A端的反向代理,具体指令为

ssh -fCNR [B端IP或省略]:[B端端口]:[A端IP]:[A端端口] [登陆B端的用户名@B端IP]

我们使用B端的20122端口,以及A端的22端口,指令如下:

ssh -fCNR 20122:localhost:22 mhming@192.168.1.111
ssh -fCNR 20123:localhost:20023 mhming@192.168.1.111

说明:这里的本地端口设置为20023与B端转发端口保持一致是为了远程调用gdbserver,不然在使用GDB调试时会出现连接不上的情况
A端增加路由

route add -net 192.168.50.0/24 eth0

B端配置

B端设置正向代理
建立B的正向代理,用来做转发,具体指令为

ssh -fCNL [可访问IP或*]:[B端端口1]:[B端IP]:[B端端口2] [登陆B端的用户名@B端IP]

说明:这里的B端端口2和上面的B端端口是一致的,端口20022的也是B端。

ssh -fCNL *:20022:localhost:20122 localhost
ssh -fCNL *:20023:localhost:20123 localhost

允许端口访问

sudo ufw allow 20022
sudo ufw allow 20023

说明:这里端口20022和20023是B端的转发端口,也就是外部网络数据接入端口,然后将数据转发到内网的20122和20123端口,实现外网到内网的互通。

C端连接测试

终端测试

ssh -p 20022 A端用户名@B端外网IP

使用内网A端用户名和密码和B端外网IP登录到A端内网的设备。

DS-5登录测试

注意更改登录端口为指定端口:20022


eclipse设置

A端免密码登录到B端内网设备

在A端进行如下操作:
生成ssh公钥

ssh-keygen

将生成的公钥拷贝到A端目录下

ssh-copy-id A端用户名@A端IP

注意:嵌入式操作系统该指令被裁剪的情况下可以手动将A端公钥(一般存放在:/.ssh/id_rsa.pub)拷贝到B端的自动认证密钥文件下面(B端:/.ssh/authorized_keys)。
获取秘钥文本

cat ~/.ssh/id_rsa.pub

然后将秘钥文本拷贝添加到B端自动秘钥文件下面即可。

B端本地SSH免密码自动登录设置

参考上述方法获取B端公钥并增加到B端自动秘钥文件下面即可。

A端反向代理自启动配置方法

由于本文所述ARM端版本有点旧,没有systemctrl或者service命令,添加自启动方法如下:
1、运行下面的指令查看系统启动等级

runlevel

得到结果如下:

N 5

对应修改rc5.d里面的启动脚本

vi /etc/rc5.d/S99stop-bootlogd

在末尾exit 0之前增加上述反向代理命令即可


修改/etc/rc5.d/S99stop-bootlogd

如果有systemctrl命令,可将下面的脚本创建文件:ssh-port-forward.service

[Unit]
Description=SSH port forward for robot ssh service and gdb debug
After=sshd.service

[Service]
User=root
Group=root
ExecStart=/usr/bin/ssh -fCNR 20122:localhost:22 mhming@192.168.1.111
[Install]
WantedBy=multi-user.target
Alias=ssh-port-forward.service

将该文件放在目录 /lib/systemd/system 下,然后执行 systemd 的配置加载、命令启动和开机自启动命令:

$ sudo systemctl daemon-reload
$ sudo systemctl start ssh-port-forward.service
$ sudo systemctl enable ssh-port-forward.service

B端正向代理自启动配置方法

方法与上述一致,注意指令内容即可。

Ubuntu20.04设置开机自启动

0x01创建rc.local

ubuntu-18.04以后 默认是没有 /etc/rc.local 这个文件的,需要自己创建

sudo touch /etc/rc.local 

0x02写入开机自启的脚本

#!/bin/sh
echo "看到这行字,说明添加自启动脚本成功。" > /usr/local/test.log
exit 0

0x03给rc.local加执行权限

sudo chmod +x /etc/rc.local

0x04链接配置文件

systemd 默认读取 /etc/systemd/system 下的配置文件, 所以还需要在 /etc/systemd/system 目录下创建软链接

ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/ 

相关文章

网友评论

      本文标题:SSH 隧道转发实现内外网主机远程调试

      本文链接:https://www.haomeiwen.com/subject/ipprhrtx.html