提出问题
利用ssh远程连接服务器时,不在服务器的同一局域网内,则会连接不了。需要利用一台具有公网的服务器进行端口转发。
解决方案
通过利用云服务器,结合frp可以实现内网穿透
参考链接:
基于腾讯云的云服务器和frp实现内网穿透
【Linux】腾讯云服务器,使用FRP内网穿透,端口映射,远程访问内网主机、代理内网
具体方法
-
对具有公网的服务器进行端口设置,本人是租用的腾讯云服务器,具体设置如下,进入如下页面,选择:服务器->防火墙->添加规则,将会添加一个7000和6000端口,7000用于公网转发,6000用于内网转发。
-
在云服务器命令行中,输入以下命令,打开云服务器防火墙对应的端口。
#启用 sudo ufw enable #开放端口 sudo ufw allow 7000 sudo ufw allow 6000 sudo ufw allow 22 # 查看状态 sudo ufw status
-
配置公网云服务器
(1)将frp软件下载、解压到到公网服务器,可以放在任何目录下。
(2)配置fprs:frp服务端
配置frps.ini文件,其默认设置如下(这里不进行更改):[common] bind_port = 7000
-
配置内网服务器
(1)将frp软件下载、解压到到内网GPU服务器,可以放在任何目录下。
(2)配置frpc:frp客户端
需要配置frpc.ini文件,如下:[common] server_addr = x.x.x.x # 云服务器的公网ip server_port = 7000 # 和云服务器连接的端口 [ssh1] # 这里是client的一个别名,命名为ssh1以和其他client区分 type = tcp # TCP 类型的代理,实现内网穿透 local_ip = 127.0.0.1 local_port = 22 # local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。ssh服务通常监听在 22 端口 remote_port = 6000 # 公网服务器的端口,表示frp服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。可以任意设置,但安全组端口和防火墙也要进行相应的设置
-
启用内网和公网的frp
(1)启动公网服务器fprs服务端
打开terminal,输入如下命令,在后台运行frps服务端:(如果nohup出现不允许操作,则加入chmod开放权限)# sudo chmod 777 -R frp文件夹 ##开放权限 nohup ./frps -c ./frps.ini &
(2)启动内网服务器fprc客户端
打开terminal,输入如下命令:nohup ./frpc -c ./frpc.ini &
-
设置开机自启动frp,在公网服务器和内网服务器都要开启
公网:
(1)执行sudo vim /etc/systemd/system/frps.service创建服务,编辑如下[Unit] Description=frps daemon After=syslog.target network.target Wants=network.target [Service] Type=simple ExecStart=/home/frp_0.38.0_linux_amd64/frps -c /home/frp_0.38.0_linux_amd64/frps.ini ##路径需更改 Restart= always RestartSec=1min [Install] WantedBy=multi-user.target
(2)开启自启动,执行如下指令
#启动frps systemctl daemon-reload systemctl start frps #设置为开机启动 systemctl enable frps
内网:
(1)执行sudo vim /etc/systemd/system/frpc.service创建服务,编辑如下[Unit] Description=frpc daemon After=syslog.target network.target Wants=network.target [Service] Type=simple ExecStart=/home/frp_0.38.0_linux_amd64/frpc -c /home/frp_0.38.0_linux_amd64/frpc.ini # 编辑的时候一定要删除注释 这里更改为自己安装frpc的绝对路径 Restart= always RestartSec=1min [Install] WantedBy=multi-user.target
(2)开启自启动,执行如下指令
#启动frpc sudo systemctl daemon-reload sudo systemctl start frpc #设置为开机启动 sudo systemctl enable frpc
文章评论