服务器搭建篇

news/2024/11/29 12:37:15/

frp内网穿透教程,ssh远程连接,服务自启动

kongdetian

已于 2022-11-16 23:27:28 修改

1393
 收藏 4
文章标签: 服务器 linux
版权
前言
有时候我们需要从公网中远程连接自己的设备(SSH,远程桌面,远程文件等),虽然诸如teamviewer和向日葵等可以较为方便的实现连接操作,但是网络不稳定,操作卡顿的现象却让我们十分难受。

frp内网穿透可以帮助我们实现自己的需求,它是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。具体介绍请点开前面的链接查看官方文档。

先简单看一下技术原理,参见下图[1]:

图中VPS即是frps(service),待远程连接的电脑就是frpc(client)。

我们需要借助一台VPS(虚拟主机)来完成中转任务。

准备工作
一台VPS(或者你有公网IP的实体主机),可以参考之前的文章,vultr新建虚拟主机
待远程连接的电脑
VPS服务器端部署
假设你VPS上装的是Debian或者Ubuntu的64位系统,这里他俩并没有什么区别。

远程ssh连接上服务器

下载frp到vps,执行以下命令:

  wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_amd64.tar.gz
1
ps:本教程更新时frp最新版本是V0.39.1,请点击前方连接到官网下载最新版

解压:

  tar -zxvf frp_0.39.1.0_linux_amd64.tar.gz
1
复制到新的frp文件夹:

cp -r frp_0.39.1.0_linux_amd64 frp
1
进入新目录:

cd frp
1
查看文件

ls -a
1
里面会包含frps, frps.ini, frpc, frpc.ini 等文件

这里我们是部署服务器端,所以删除客户端client的文件:

rm frpc
rm frpc.ini
1
2
修改服务器端文件配置,打开frps.ini

vim frps.ini
1
填写以下内容[1]:

[common]
bind_port = 7000
dashboard_port = 7500
token = mypwd
dashboard_user = root
dashboard_pwd = 123456
vhost_http_port = 10080
vhost_https_port = 10443
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
1
2
3
4
5
6
7
8
9
10
11
12
一些解释
“bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
“dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
“token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。
编辑完成后,保存退出。(vim的命令:先按Esc,然后英文状态下的 : 然后输入wq (代表write和quit))。

开放防火墙端口

sudo apt install firewalld
sudo firewall-cmd --permanent --add-port=7000/tcp
sudo firewall-cmd --permanent --add-port=7500/tcp
sudo firewall-cmd --permanent --add-port=7001/tcp
sudo firewall-cmd --reload
1
2
3
4
5
运行frps服务

./frps -c frps.ini
1
如果看到类似下面的内容,说明成功了:

2022/03/06 15:22:39 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000
2022/03/06 15:22:39 [I] [service.go:172] http service listen on 0.0.0.0:10080
2022/03/06 15:22:39 [I] [service.go:193] https service listen on 0.0.0.0:10443
2022/03/06 15:22:39 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500
2022/03/06 15:22:39 [I] [root.go:210] Start frps success
1
2
3
4
5
这时访问x.x.x.x:7500 (x.x.x.x是你的VPS提供的IP) 并使用自己设置的用户名密码登录,即可看到仪表板界面。


如果此时我们关闭terminal,刚才运行的frps会自动结束,这时我们就需要把它挂在后台。

服务器端后台运行及开机自启
  nano /lib/systemd/system/frps.service

  [Unit]
  Description=frps service
  After=network.target syslog.target
  Wants=network.target

  [Service]
  Type=simple
  # frp安装目录
  ExecStart=/root/frp_0.39.1_linux_amd64/frps -c /root/frp_0.39.1_linux_amd64/frps.ini

  [Install]
  WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
启动服务并设置开机启动:

  sudo systemctl enable frps
  sudo systemctl start frps
1
2
这时我们重启服务器,无需任何手动操作,仍然可以通过x.x.x.x:7500访问后台面板。

客户端部署
这一步用来设置需要被远程连接的设备,我们以Linux系统的电脑为例,还是同服务器端一样下载文件,解压,复制到新文件夹,然后删除frps和frps.ini。

打开 frpc.ini,编辑以下内容:

[common]
server_addr = x.x.x.x
server_port = 7000
token = mypwd
[ssh]
type = tcp
local_ip = 127.0.0.1           
local_port = 22
remote_port = 6000 
[ssh2]
type = tcp
local_ip = 127.0.0.1           
local_port = 50000
remote_port = 50000
[ssh3]
type = tcp
local_ip = 127.0.0.1           
local_port = 50001
remote_port = 50002
[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001  
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
其中common字段下的三项是我们早先在服务器端设置的内容。
如果我们只需要ssh服务,下面的rdp和smb内容可以不填写。
如果需要一个服务器给多台设备提供frp服务,可以使用以上设置多个ssh。

运行服务

./frpc -c frpc.ini
1
后台挂起

nohup ./frpc -c frpc.ini &
1
Windows客户端使用

在文章开头下载frp的网址下载对应的Windos版本,这里我们需要编辑client客户端的配置,即frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000
token = mypwd
[ssh]
type = tcp
local_ip = 127.0.0.1           
local_port = 22
remote_port = 6000 
[ssh2]
type = tcp
local_ip = 127.0.0.1           
local_port = 50000
remote_port = 50000
[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001  
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
然后再写一个脚本启动服务start.bat:

@echo off

if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin

  ## 这个替换成你自己的文件路径
cd /d "D:\software\frp_0.39.1.0_windows_amd64"

frpc -c frpc.ini
1
2
3
4
5
6
7
8
9
10
之后每次重启电脑,需要开启frp服务,只需要双击执行这个脚本即可。

开机自启动
上面的脚本可以在开机之后双击启动frpc服务,但是如果想每次开机时自启动该服务,则需要另外一个脚本来辅助。
ps:笔者尝试将上文中的start.bat放入开机启动文件夹,但是会有报错。
首先写一个start.bat脚本:

@echo off
cd /d "D:\software\frp_0.39.1.0_windows_amd64"
frpc -c frpc.ini
1
2
3
再写一个start.vbs脚本:

CreateObject("WScript.Shell").Run "cmd /c D:\frp_0.39.1_windows_amd64\start.bat",0
1
注意把文件中start.bat所在文件夹的路径替换成你自己的。

建议将start.bat和start.vbs都放在你的frp文件夹内。

然后在windows的组策略–计算机配置–windows设置–脚本(启动/关机)–启动–添加–选择start.vbs,然后应用–确定。

linux系统开机自启

类似于服务器端:

nano /lib/systemd/system/frpc.service

[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
# frp安装目录
ExecStart=/root/frp_0.39.1_linux_amd64/frpc -c /root/frp_0.39.1_linux_amd64/frpc.ini

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
启动服务并设置开机启动:

sudo systemctl enable frpc
sudo systemctl start frpc
1
2
一些解释
“[xxx]”表示一个规则名称,自己定义,便于查询即可。
“type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。
“local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。
“remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。
RDP,即Remote Desktop 远程桌面,Windows的RDP默认端口是3389,协议为TCP,建议使用frp远程连接前,在局域网中测试好,能够成功连接后再使用frp穿透连接。

SMB,即Windows文件共享所使用的协议,默认端口号445,协议TCP,本条规则可实现远程文件访问。

远程连接
远程连接的电脑是linux系统
Linux可以直接打开terminal,Windows可以使用ssh工具,比如putty或者MobaXterm,在命令行界面输入x.x.x.x:6000,这里的6000是你自己设置的端口,可以是任何你设置的数字,然后输入本地用户名和密码就可以成功连接。

远程连接的电脑是windows
可以直接使用windows电脑自带的远程连接工具,输入vps ip:远程端口,即可输入用户名和密码登录。例如,远程主机ip是1.2.3.4,frpc.ini中设置的remote_port = 7001,可以输入1.2.3.4:7001远程连接电脑。

如果待连接的电脑是笔记本电脑或者是使用wifi连接的设备,那么在你远程登录过程中,待连接电脑会自动锁屏,然后断掉wifi。。。。目前我还找到解决这个问题的办法,只能使用网线连接。

连接过程中可能出现的问题参考文章 微软远程桌面登录

Reference
[1] https://sspai.com/post/52523/
————————————————
版权声明:本文为CSDN博主「kongdetian」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kongdetian/article/details/127895436


http://www.ppmy.cn/news/587229.html

相关文章

服务器搭建

服务器搭建 搭建服务器之前的准备 云服务器(我用的百度云服务器CentOS / 7.2 x86_64 (64bit)系统),mysql数据库管理系统(如果没有云数据库,需要在服务器中自行安装,我安装的是mysql 5.7 64位的)&#xff0…

搭建个人服务器

组建一个自己的服务器 一、服务器是什么?他的作用是什么?二、服务的分类!三、域名是什么? 相信学习了一段时间的网页以后,都想自己做一个网站,体验一哈当站长的感觉,这里小佬弟今天就教大家搭建…

部署服务器

早些日子想着搭建自己的一台服务器,奈何各方面的因素使之悬而未决,今有幸有机会动手操作一番,想着将其记录下来,方便暴露出问题,还望各路大神多多指点 一,购买服务器 目前市场上服务器可选择较多&#xf…

服务器的搭建及配置

记录一下服务器的搭建及配置 部署服务器安装Git并部署自动发布添加post-receive钩子 结语 准备搭建一个Laravel框架的项目,就记录一下从新的服务器一步一步搭建的步骤,方便下来查看。 部署服务器 登录服务器 #ssh root服务器的IP在这因为之前我通过公钥…

搭建服务器

一、服务器搭建 服务器可以分为网络服务器和本地服务器两种类型,各有优势,网络服务器不需要硬件设计,访问便捷;本地服务器在数据安全上更具优势。 (1)本地服务器搭建 参考链接:如何搭建一个自…

服务器的搭建

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

第一章 基本架设服务器流程

虽然不同的服务器提供的服务并不相同,而且每种服务的原理也不见得都一样,不过 ,每种服务器由规划、架设到后续的安全维护, 其实整个流程是大同小异的。什么?你不相信啊?为了让你相信,那我们就来…

MapBox 实现自定义地图样式配置(包含本地静态引入)

Mapbox 官方提供了非常多的样式的底图,但是有的时候我们想要自己定义地图的样式基调,比如我们想看到这种样式的地图: 这就需要我们要有自己配置地图的能力了。 那么接下来我们说说怎么做。 首先我们还是登录 mapbox 的官网,找到样式配置的页面,这里直接给大家链接: A…