arm系统的sshd server——dropbear及frp内网穿透

知是行的主意,行是知的功夫。这篇文章主要讲述arm系统的sshd server——dropbear及frp内网穿透相关的知识,希望能为你提供帮助。

本文主要是针对一些arm开发板做的项目,某些板子并不具备ssh的功能,只能使用Telnet或者adb进行操作,连接时安全性有极大的问题,而adb要使用USB线进行连接,本文主要解决了ssh的问题和板子没有固定IP导致产品交付客户后,出现问题只能出差现场解决问题造成的困扰。在无人车项目等领域较为适用,如果你的无人车或相应设备是台工控机或者安装了完整的系统frp也能使用,不过个人建议选择autossh,后面有时间会写相应的文档,ps:内网穿透需要一台具备固定IP地址的服务器,根据业务量来选择带宽
一、 dropbear的移植及安装?Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台。 Dropbear是开源软件,在麻省理工学院式的许可证。 Dropbear是特别有用的“嵌入”式的Linux(或其他Unix)系统,如无线路由器。(一个完整的openssh大小有7M左右)。?
1、以下操作需要在完整的Ubuntu系统中执行
a)Zlib编译
tar -jxvfzlib-1.2.11.tar.bz2-C/test-openssh/source/zlib-1.2.11/

cd /test-openssh/source/zlib-1.2.11/

export CC=(指定你的交叉编译工具)

./configure --prefix=$PWD/install

make

make install



b)移植dropbear
下载地址:??https://matt.ucc.asn.au/dropbear/releases/dropbear-2016.74.tar.bz2??
#解压dropbear
tar -jxvf dropbear-2016.74.tar.bz2 -C /usr/local/dropbear/src

#进入dropbear的解压目录
cd /usr/local/dropbear/src

#配置dropbear
./configure --prefix=/usr/local/dropbear--with-zlib=/test-openssh/source/zlib-1.2.11/ CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnuebihf
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

#生成的目录结构如下
tree dropbear
#dropbear
#├── bin
#│├── dbclient
#│├── dropbearconvert
#│├── dropbearkey
#│└── scp
#├── sbin
#│└── dropbear
#├── scp
#└── share
#└── man
#├── man1
#│├── dbclient.1
#│├── dropbearconvert.1
#│└── dropbearkey.1
#└── man8
#└── dropbear.8
#

二、开始移植,以下部分在arm中执行
将/usr/local/dropbear/bin/复制到/usr/bin/下
将/usr/local/dropbear/sbin/复制到/usr/sbin目录下
记住这几个想应的命令,如果板子的/usr/bin/以及sbin目录不允许写入,则将这几个命令放在你的工作目录下,只要有写入权限就行,随意存放,直接使用./执行即可
cd /etc
mkdir dropbear
cd dropbear
dropbearkey -t rsa -f dropbear_rsa_host_key
dropbearkey -t dss -f dropbear_dss_host_key

?启动dropbear?
dropbear -E -p 12345    #-p 1234标识ssh server端口号为123
别忘了给你的板子设置一个用户,有些板子没有useradd或者没有passwd命令,可以找一个ubuntu或者别的啥linux,从?/etc/shadow拷贝一个用户出来
二、frp内网穿透安装
??frp???  是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发,?
一、客户端安装
tar xvf frp_0.22.0_linux_arm.tar.gz -C /$workfile/#将解压后的目录传输进arm系统

cd /$workfile/frp_0.22.0_linux_arm

rm -rf frps* #frps开头的文件为server端使用

vi frpc.ini
[common]
server_addr = x.x.x.x##服务器的ip
server_port = 7000##与服务端绑定的进行通信的端口,默认是7000,建议修改一个
token = xxxxxxxxx##客户端和服务端的 common 配置中的 token 参数一致则身份验证通过,可以理解为一个验证密码

[ssh]##如果有多台主机需要穿透,尽量保证[]中的内容时唯一的,否则server端会产生错误报警,但是该报警一般不会导致服务中断,
type = tcp##传输协议
local_ip = 127.0.0.1##内网机器的ip
local_port = 1234##需要穿透的端口,此处为dropbear的端口号
remote_port = 12341##连接的端口号,确保服务器该端口未被使用(每辆车都需要唯一,不可冲突,该端口意思为,以后连接服务器的这个端口,就会跳转到本机,例如我的服务器IP为X.X.X.X我在ssh X.X.X.X:12341时,连接到的就是我当前机器的1234端口)
#可以写多个模块,按照[ssh]中内容抄写即可
#如果您有多个设备,建议将[]内容保持唯一,每个设备都用不同的名字,否则服务器可能会报错,但是并不影响使用

【arm系统的sshd server——dropbear及frp内网穿透】写个客户端启动脚本
#添加一个脚本,很奇怪,貌似nohup不能直接执行太长的命令,写进脚本就可以
vi /$workfile/frp_0.22.0_linux_arm/start.sh
#!/bin/bash
/$workfile/frp_0.22.0_linux_arm/frpc -c /$workfile/frp_0.22.0_linux_arm/frpc.ini > status.log 2> & 1 &

chmod 777 /$workfile/frp_0.22.0_linux_arm/start.sh
#启动命令,将下列命令写入开机自启脚本即可,提醒一下,如果您是要将该设备出售的话,建议做个求助功能,在客户做出求助操作时,再执行下列脚本,如果写入开机自启脚本,被客户发现你可以随时远程该设备,后果可能很严重!!!!!!!!!!
nohup bash /$workfile/frp_0.22.0_linux_arm/start.sh > /$workfile/frp_0.22.0_linux_arm/nohup.log

二、服务器端安装
#服务端多个设备使用服务端一个配置文件即可,具体支持多少暂不明确...............
#下载安装包
wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gz

#进行解压
tar xvf frp_0.22.0_linux_amd64.tar.gz

cd frp_0.22.0_linux_amd64/

rm -rf frpc* #frpc开头的文件为client端使用

#修改配置文件
vi frps.ini
[common]
bind_port = 7000##与客户端绑定的进行通信的端口,可以一对多
authentication_timeout = 0##不强制要求时间同步
token= xxxxxxxxxxxx##服务端和客户端的 common 配置中的 token 参数一致则身份验证通过,

#启动服务端(建议放在screen空间中执行启动命令,以便断开连接后下次连接还能进来,当然你想使用nohup或& 也可以)
./frps -c frps.ini


    推荐阅读