终南捷径 發表於 2021-12-12 10:16:00

使用frp进行内网穿透,实现ssh远程访问Linux服务器

<p>搭建一个完整的frp服务链需要:</p>
<ol>
<li>
<p>VPS一台(也可以是具有公网IP的实体机)</p>
</li>
<li>
<p>访问目标设备(就是你最终要访问的设备)</p>
</li>
<li>
<p>简单的Linux基础(如果基于Linux配置的话)</p>
</li>
</ol>
<p>我这里使用了腾讯云服务器作为服务端(Ubuntu Server 20.04 LTS)、本地Linux虚拟机作为要访问的客户端(Ubuntu 20.04 LTS)和本地Xshell(用于远程连接客户端)进行测试。</p>
<p>最后是想把实验室的电脑进行内网穿透实现 ssh 远程访问。</p>
<p>流程很简单,服务端和客户端都下载 frp 配置文件,分别修改配置(地址、端口映射),然后启动运行即可。本文基于 Linux 配置,macOS 和 Windows 流程一致,最多是命令可能有点区别。</p>
<hr>
<h2 id="服务端配置">服务端配置</h2>
<p>下载 frp 的安装包(GitHub连接在此),<strong>注意服务端和客户端要同一版本</strong>。我这里是64位Linux,最新版是0.38.0,根据需要选择即可,速度太慢自己想办法,可以考虑本地下了通过ftp传到服务器。</p>
<pre><code class="language-Bash">wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
</code></pre>
<p>解压,文件夹改名为frp,方便使用。腾讯云可能把这玩意当作木马,去控制台信任即可。</p>
<pre><code class="language-Bash">tar -zxvf frp_0.38.0_linux_amd64.tar.gz
cp -r frp_0.38.0_linux_amd64 frp
cd frp

</code></pre>
<p>看一下文件夹下的内容:</p>
<pre><code class="language-Bash">ubuntu@VM-0-10-ubuntu:~/frp$ ls -a
...frpcfrpc_full.inifrpc.inifrpsfrps_full.inifrps.iniLICENSEsystemd
</code></pre>
<p>我们只需要关注如下几个文件</p>
<ul>
<li>
<p>frps</p>
</li>
<li>
<p>frps.ini</p>
</li>
<li>
<p>frpc</p>
</li>
<li>
<p>frpc.ini</p>
</li>
</ul>
<p>前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。因为我们正在配置服务端,可以删除客户端的两个文件(删不删无所谓),然后修改frps.ini文件。</p>
<pre><code class="language-Bash">rm frpc
rm frpc.ini

vim frps.ini

</code></pre>
<p><code>frps.ini</code>文件内容如下:</p>
<pre><code class="language-text">
bind_port = 7000

</code></pre>
<p><code>bind_port</code>表示用于客户端和服务端连接的端口,默认绑定 7000 端口,云服务器注意打开相应端口。其实还有其他参数可选配置实现其他功能,这里只实现ssh远程访问,不作讨论。</p>
<p>编辑完成后即可保存,运行服务端应用:</p>
<pre><code class="language-Bash">./frps -c frps.ini
</code></pre>
<p>如下则成功运行:</p>
<pre><code class="language-text">2021/12/12 00:32:59 frps uses config file: frps.ini
2021/12/12 00:32:59 frps tcp listen on 0.0.0.0:7000
2021/12/12 00:32:59 frps started successfully
</code></pre>
<p>此时的服务端仅运行在前台,如果 <code>Ctrl+C</code> 停止或者关闭 SSH 窗口后,frps 均会停止运行,因而我们使用 nohup 命令将其运行在后台。nohup命令可以让你的shell命令忽略SIGHUP信号,即可以使之脱离终端运行;“&amp;”可以让你的命令在后台运行。</p>
<pre><code class="language-Bash">nohup ./frps -c frps.ini &amp;
</code></pre>
<p>此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序<code>jobs</code>在结果中我们可以看到frps正在后台正常运行:</p>
<pre><code class="language-text">+Running               nohup ./frps -c frps.ini &amp;

</code></pre>
<h2 id="客户端配置">客户端配置</h2>
<p>以同样的方式下载 frp</p>
<pre><code class="language-Bash">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
cp -r frp_0.38.0_linux_amd64 frp
cd frp
vim frpc.ini

</code></pre>
<p><code>frpc.ini</code>文件内容如下:</p>
<pre><code class="language-text">
server_addr = 127.0.0.1
server_port = 7000


type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

</code></pre>
<p><code>common</code>字段下的三项即为服务端的设置。</p>
<ul>
<li>
<p><code>server_addr</code>为服务端IP地址,自行更改。</p>
</li>
<li>
<p><code>server_port</code>为服务器端口,填入你设置的端口号即可,如果未改变就是7000。</p>
</li>
</ul>
<p><code></code>表示一个规则名称,自己定义,便于查询即可。这里用于 ssh 所以命名为 了。</p>
<ul>
<li>
<p><code>type </code>连接类型,默认为 tcp,如有需要请自行查询 frp 手册。</p>
</li>
<li>
<p><code>local_ip</code> 本地 IP</p>
</li>
<li>
<p><code>local_port</code> 用于 ssh 的端口号,默认 22</p>
</li>
<li>
<p><code>remote_port</code> 映射的服务端端口,访问该端口时默认转发到客户端的 22 端口,不同的客户端设置不同的端口号。</p>
</li>
</ul>
<p>配置好后可以使用同样的方法后台运行客户端程序:</p>
<pre><code class="language-Bash">nohup ./frpc -c frpc.ini &amp;
</code></pre>
<h2 id="测试">测试</h2>
<p>启动完成后就可以通过 ssh 连接到内网服务器了,同时也可以用 sftp 传输文件。</p>
<pre><code class="language-Bash">ssh -p 6000 user@host
</code></pre>
<h2 id="参考">参考</h2>
<p> 使用 frp 进行服务器内网穿透</p>
<p> 使用frp进行内网穿透</p>
<p> 如何使用 frp 实现内网穿透</p>
<p> win10下用frp内网穿透实现ssh远程连接linux服务器(Windows可参考这篇)</p><br><br>
来源:https://www.cnblogs.com/mengo/p/15678359.html
頁: [1]
查看完整版本: 使用frp进行内网穿透,实现ssh远程访问Linux服务器