需求
想要在公司的 Window 电脑上连接家里的 Linux 电脑,进行 ssh 连接
寻找
经过向群里大佬咨询得知, frp (gofrp.org) 工具应该可以满足我目前的需求。
实现
提前说明:所有的操作为最简化操作,完整操作可以查看官方文档。
以下操作都是单服务,但官方也提供了 frps@.server
和 frpc@.server
的启动文件,这意味着可以同时启动多个服务,监听不同的端口。
材料
- 一台具有公网 IP 的云服务器 ( Linux ), 版本 CentOS 7
- frp 服务端 && 客户端 版本 v0.37
- 一台自用 Linux 电脑 版本 OpenSUSE Leap 15.3
- 公司发的 Window 电脑 版本 Window 10
云服务器
云服务器一般会把 Linux 的防火墙关闭,但同时他们会进行安全组设置,因此可能需要配置对应安全组策略来将需要的端口打开。
另外,国内的云服务器厂商要是没去备案的话,那么 80 和 443 端口无法使用。
# 查看信息,下载对应的压缩包,比如 x86_64 对应的就是 amd64
uname -a
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar -xf frp_0.37.1_linux_amd64.tar.gz
cd frp_0.37.1_linux_amd64
cp frps /usr/bin
mkdir -p /etc/frp
cp frps.ini /etc/frp
cp systemd/frps.service /usr/lib/systemd/system
systemctl start frps
systemctl enable frps
## 查看状态,正常为 active(running)
systemctl status fps
现在 frps (服务端)已经开启,默认端口是 7000
, 如果需要修改监听,可以修改 /etc/frp/frps.ini
文件。设置的端口不能与其他进程监听的端口有所冲突。
vim /etc/frp/frps.ini
## 文件内容
[common]
bind_port = 7000
systemctl restart frps
自用 Linux 电脑
## 打开指定端口
firewall-cmd --permanent --add-port=22/tcp
systemctl restart firewalld.service
## 或者直接关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
uname -a
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar -xf frp_0.37.1_linux_amd64.tar.gz
cd frp_0.37.1_linux_amd64
cp frpc /usr/bin
mkdir -p /etc/frp
cp frpc.ini /etc/frp
cp systemd/frpc.service /usr/lib/systemd/system
需要修改 /etc/frp/frpc.ini
配置文件后,才能正常启动。
vim /etc/frp/frpc.ini
## 文件内容
[common]
server_addr = 127.0.0.1 # 需要改成服务端的服务器公网ip
server_port = 7000 # 需要改成服务端 监听的端口
[ssh_mylinux] # 默认 [ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8000 # 默认 6000
systemctl start frpc
systemctl enable frpc
# 查看状态,正常为 active(running)
systemctl status fpc
注意:
[ssh]
字段,不应该与其他的客户端重名。[remote_port]
字段,不应与本机、服务端的其他进程监听的端口冲突。
公司的 Window 电脑
如果只是想用 Window 去连接家里的 Linux 电脑,那么就不需要配置了,直接使用 XShell 等 ssh 工具进行连接即可。
但是,如果你想在家里连接公司的 Window 电脑的话,那么就需要做一些配置了。当然还是通过 ssh 连接,之后去使用 Window 的 Powershell 进行操作。
可以参考一下下面两篇文章
适用于 Windows 10 1809 和 Windows Server 2019 的 OpenSSH 服务器配置
其中设置 openssh 的默认 shell,可以改成 powershell 7。
同样也是需要配置客户端,并执行 ./frpc.exe -c ./frpc.ini
命令,如果不想每次都手动在 cmd 或者 powershell 中去执行,可以使用 nssm 工具写成开机自启服务。
其他
TeamViewer
这样的工具,可以进行可视化的远程操作,但我不知道有啥样的开源项目能够对标 TeamViewer
。另外如果有更好的工具,希望能有小哥哥小姐姐能够在下面评论一下。