内网穿透

最简单的方案为ssh端口转发,但是ssh断掉之后不会自动重连,我们需要autossh,它可以监控本地端口状态自动重连

1
2
sudo pacman -S autossh
autossh -M 4010 -fNTR 8899:localhost:22 user@ip

参数解释,4100是autossh监听端口,如果ssh连接断掉会向这个端口发送信号,可以随便改成别的,8899为公网服务器转发端口,表示把8899端口转发到本机22端口。但是此时 ssh user-local@ip -p 8899 仍然不起作用,因为sshd默认只允许本地访问,可以ssh user@ip 登录公网服务器之后ssh user-local@localhost -p 8899,如果想直接用ssh user-local@ip -p 8899 需要登录公网服务器修改sshd配置

1
vim /etc/ssh/sshd.config

GatewayPorts no改为GatewayPorts yes

然后重启sshd服务

1
sudo systemctl restart sshd

这时就可以ssh user-local@ip -p 8899

vnc服务安装

1
sudo pacman -S tigervnc

设置环境变量,为了和物理机桌面同步,设为:0

1
export DISPLAY=:0

启动vnc服务,

1
x0vncserver -localhost -SecurityTypes=None

-localhost参数表示只允许本地连接,这样就避免vnc服务暴露在公网,更安全,SecurityTypes=None表示不设置密码。

这时要想连接到vnc服务就需要ssh端口转发

1
ssh -L 5900:localhost:5900 user@ip

然后vnc viewer连接到localhost:5900即可,安卓端可以使用realvnc,这时就可以访问桌面了,效果图