背景
基于产品网络拓扑,终端是放置在各个不同地区的地方,这些地方终端通过网络跟服务平台端连通。但这个网路可能是过了多级路由,导致网络能通,但是IP不可见,尤其在公网情况下,看到的可能是这个终端所在的小区或者公司的对外IP。所以,我们想要远程ssh到我们的终端上的话,必须到达这个终端所在的局域网才行,这个会耗费大量的人力物力和时间。
所以需要在终端IP不可见的情况下,通过网络SSH登录上去。
示例
反向SSH命令,在终端上敲(通过网络消息实现):ssh -R 2222:localhost:22 用户名@服务端IP输入密码登录。其中2222是后续SSH登录的端口号,可以自定义。
然后在服务端上敲:ssh -p 2222 localhost即可登录终端,可以不用填终端IP。
需要免密登录加后台运行使用下面命令:
nohup sshpass -p "密码" ssh -N -R 端口:localhost:22 用户名@服务端IP &
断开SSH,只需要把对应的进程杀掉即可。
但是因为ssh反向代理在网络不稳定的环境下面就会很麻烦,连接断开后还要自己手动连接,所以为了实现稳定的ssh反向代理穿透,使用autossh,autossh会用一个特定的端口监视ssh反向代理端口,从而实现稳定的连接,在网络不好的时候会自动连接。
使用命令
./autossh -M 消息端口 –NR 登录端口:localhost:22 用户名@服务端IP
dropbear
dropbear是轻量级的sshd服务器,与OpenSSH相比,他更简洁,更小巧,运行起来占用的内存也更少,因此被很多嵌入式设备所使用。其中dropbear对应sshd服务,dbclient对应ssh客户端工具。
Dropbear交叉编译:
- 下载源码https://matt.ucc.asn.au/dropbear/releases/
- mkdir build;./configure --prefix=build --host=arm --disable-zlib --disable-bundled-libtom
- Makefile里修改交叉编译器
- make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
- make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
dropbear反向SSH运行:
1.终端上执行./dropbear -p 10810,输入终端密码,运行SSH服务。
2.然后执行命令
./dbclient -R 12322:localhost:10810 用户名@IP
3.服务端上敲ssh -p 12322 root@localhost,输入终端密码,即可登录终端。