远程访问非公网ip服务器

通过具有公网ip的设备设立frp实现

Posted by Oscar Zhang on August 19, 2018

远程控制大家最常用的可能是TeamViewer,通过控制实时画面进行操作。但我们的非公网下的服务器并不能使用,而且也不希望对原账号画面造成改动。
FRP ,采用具有公网ip的服务器做跳板,可以很好的实现这一过程,就跟本地ssh连接一样。
以下是具体操作:

server & client

下载 frp

1
2
3
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz    
tar zxvf ./frp_0.21.0_linux_amd64.tar.gz    
cd frp_0.21.0_linux_amd64/

server 配置

跳板机器,公网ip,可通过谷歌云实现
进行如下配置:

修改frps.ini配置文件, 设置bind_port端口号
/etc/rc.local添加启动服务

1
nohup ./frps -c ./frps.ini > /dev/null 2>&1 &

client 配置

受控机器设置:

修改frpc.ini配置文件, 设置server_port = bind_port ,设置remote_port端口号、server_addr端口号
/etc/rc.local添加启动服务

1
nohup ./frpc -c ./frpc.ini > /dev/null 2>&1 &)

远程控制端

1
ssh -oPort=remote_port username@server_addr

注意事项

当需要操作多个服务器时,跳板server使用一个bind_port,多个client岔开remote_port即可。

因为ssh有时断开,难免造成进程丢失程序终端,所以应采用以下形式:

1
nohup command > ~/Dropbox/droplog/`date '+%y%m%d%H%M%S'`.txt  2>&1 &

nohup [...] & 为固定搭配;> 覆盖;>> 续写 输出目录自定,我这里是放到了Dropbox下方便查看情况。

ps. 非SSH形式,即vncserver下可以使用如下形式,SHELL的输出可以同时保存到文件:

1
command | tee ~/Dropbox/droplog/`date '+%y%m%d%H%M%S'`.txt                     ( tee 为同时保存到文件 )

待验证:确保ssh登陆之后使用vncserver命令打开图形界面,激活dropbox等服务