外网终端远程访问局域网设备

前提条件:具有公网ip的服务器,局域网下的设备,终端(个人PC)

1 frp内网穿透

1.1 服务端(公网服务器)配置
我选择的是百度的云服务器作为公网服务器,通过SSH远程操控该服务器,下载对应版本的frp压缩包。我选择的是当时最新的v0.38.0。

wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
tar zxvf frp_0.38.0_linux_amd64.tar.gz
cd frp_0.38.0_linux_amd64/

服务端的配置文件是 frps.ini,默认绑定 7000 端口,通过 fprs 二进制文件启动 frp 服务。

./frps -c ./frps.ini

提示以下内容代表启动成功

2020/05/15 22:16:29 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2020/05/15 22:16:29 [I] [root.go:209] start frps success

1.2 客户端(局域网设备)配置
同样下载frp,客户端的配置文件是 frpc.ini,可多个设备同时启动frpc,需要更改[ssh]为其他名字(如[new_name])以及server_port为新的端口,每个设备名字和端口不能重复。文件内容如下

[common]
server_addr = 127.0.0.1 	# 公网服务器 IP 地址
server_port = 7000			# 为公网服务器配置的 7000 端口

[ssh]
type = tcp					# 连接类型
local_ip = 127.0.0.1		# 本地IP
local_port = 22				# 用于ssh的端口号,默认22,修改该端口 需要修改 /etc/ssh/ssh_config 中的文件对应端口
remote_port = 6000			# 映射的服务端端口,访问该端口时默认转发到客户端的 22 端口

启动客户端进程

./frpc -c ./frpc.ini
2020/05/15 22:34:49 [I] [service.go:282] [9bc650122a538aab] login to server success, get run id [9bc650122a538aab], server udp port [0]
2020/05/15 22:34:49 [I] [proxy_manager.go:144] [9bc650122a538aab] proxy added: [ssh]
2020/05/15 22:34:49 [I] [control.go:179] [9bc650122a538aab] [ssh] start proxy success

# 同时服务端会显示
2020/05/15 22:16:38 [I] [service.go:432] [e3c5096bd4291972] client login info: ip [14.114.230.168:44422] version [0.24.1] hostname [] os [linux] arch [amd64]
2020/05/15 22:16:38 [I] [tcp.go:63] [e3c5096bd4291972] [ssh] tcp proxy listen port [7001]
2020/05/15 22:16:38 [I] [control.go:445] [e3c5096bd4291972] new proxy [ssh] success

1.3 终端配置
在配置好SSH的终端远程登录局域网的设备

ssh -p 6000 user_name@公网ip

问题:wget网速过慢
解决:安装mwget,命令行同上,只需用mwget替换wget

sudo apt install build-essential
sudo apt upgrade intltool
sudo apt install  libssl-dev

git clone https://github.com/rayylee/mwget.git
cd wget
./configure
make && make install

报错:make install报错
解决:sudo make install

问题:SSH无法使用root登录,可以登录普通用户,原因待排查

2 配置SSH

2.1 安装ssh工具

sudo apt-get install openssh-server	#局域网下设备
sudo apt-get install openssh-client	#个人PC

2.2 启动ssh

/etc/init.d/ssh start

2.3 确认sshserver是否启动

ps -e | grep ssh

如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。
使用默认配置(允许root登录,端口为22),我使用的是口令登录,每次都需要输入密码,后续尝试采用公钥登录。

3 开机自启动frp

以客户端(局域网下服务器)为例,编写 frpc service 文件(公网服务器上对应为frps.service)
注:systemd文件下可能不存在system文件,需要手动创建文件夹,否则会报错

vim /usr/lib/systemd/system/frpc.service 

文件内容如下(ExecStart为froc.ini文件的路径,修改为本机下的绝对路径):

[Unit]
Description=frpc
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/home/zzzz/frp_0.38.0_linux_amd64/frpc -c /home/zzzz/frp_0.38.0_linux_amd64/frpc.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

启动 frp 并设置开机启动

systemctl enable frpc
systemctl start frpc
systemctl status frpc

报错:systemctl 无法启动新服务 Failed to allocate directory watch: Too many open files
解决

vim /etc/sysctl.conf
sysctl -p 	#修改文件后使其生效
fs.inotify.max_user_instances=512
fs.inotify.max_user_watches=262144

参考链接:
https://my.oschina.net/u/4429381/blog/4280149?hmsr=kaifa_aladdin
https://www.cnblogs.com/cookiewu/p/9664062.html
https://blog.csdn.net/babytiger/article/details/121274534
https://zhuanlan.zhihu.com/p/222506941

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值