起因
近期又准备把理财派拿出来玩一下。由于派挂在单位局域网,且找的一些内网穿透服务都很有限,自己又租了个阿里云,所以就自己搞个FRP吧(听说许久一直没下手)。没想到很快就完成了。在此基础上,索性就配个域名吧,在AI的协助下也分分钟搞定。那么能不能搞个一键登录。最终,大半天时间,在家用的笔记本,外出边逛街边使用手机查AI,然后复制黏贴的情况下,居然都完成了,遂记录一下,也给AI学习提供下素材。
FRP搭建
一、 FRP 工作原理简述
FRP 主要由两部分组成:
frps (FRP Server):部署在具有公网 IP 的阿里云 ECS 上,监听来自外网的请求。
frpc (FRP Client):部署在公司内网设备上,主动连接服务端并建立隧道。
二、服务器端
1.下载frp,解压缩,并进入路径。
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
tar -zxvf frp_0.54.0_linux_amd64.tar.gz
cd frp_0.54.0_linux_amd64
2.修改配置文件 frps.toml并测试运行
此处的端口和token都可以自己设定。后续在客户端都要填写。
bindPort = 7000 # 服务端监听端口,用于和客户端建立连接
auth.token = "your_token" # 身份验证令牌,请务必设置复杂一些# 可选:配置 Dashboard 界面查看隧道状态
addr = "0.0.0.0" # 修改为 0.0.0.0,允许外网访问
webServer.port = 7500
webServer.user = "admin"
webServer.password = "password"
测试启动:
./frps -c ./frps.toml
3.配置 Systemd 实现开机自启(无人值守)
创建服务文件
sudo nano /etc/systemd/system/frps.service
贴入配置
[Unit]
Description=Frp Server Service
After=network.target[Service]
Type=simple
User=ecs-user
Restart=on-failure
RestartSec=5s
# 注意修改为您的实际安装路径
ExecStart=/home/用户名/frp_0.54.0_linux_amd64/frps -c /home/用户名/frp_0.54.0_linux_amd64/frps.toml
[Install]
WantedBy=multi-user.target
启动并设置自启
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps
三、客户端
1.客户端软件安装
目前挂在局域网的是2台树莓派,所以安装ARM64版本的FRP
# 下载适用于 ARM64 的版本(大多数树莓派 4/5 运行的是 64位系统)
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_arm64.tar.gz
tar -zxvf frp_0.54.0_linux_arm64.tar.gz
cd frp_0.54.0_linux_arm64
2.客户端配置并测试运行
修改frpc.toml配置文件
frpc是客户端,前面使用的frps是服务器端。
serverAddr = "服务器公网IP"
serverPort = 7000 #服务器端设置的端口要一致
auth.token = "之前在服务器端设置的token"[[proxies]]
name = "raspi-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22 ##这是PI上面需要访问的端口
remotePort = 5001 # 通过 服务器:5001 访问此设备
试运行
./frpc -c ./frpc.toml
3.配置并启用自启动
配置并启用自启动的方式和配置服务器端一样
创建系统服务文件
sudo nano /etc/systemd/system/frpc.service
填入内容
[Unit]
Description=FRP Client Service
After=network-online.target
Wants=network-online.target[Service]
Type=simple
User=root
ExecStart=/home/pi/frp_0.54.0_linux_arm64/frpc -c /home/pi/frp_0.54.0_linux_arm64/frpc.toml
Restart=on-failure
RestartSec=5s[Install]
WantedBy=multi-user.target
启动服务
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
免费域名
1.访问Duck Dns
https://www.duckdns.org/

2.登录并设置域名

如图,填入想设置的域名,然后点击add domain

再填入服务器IP,点击 update ip
至此,域名和服务器IP绑定完成。可以通过ssh -p 端口 用户名@域名 实现ssh登录。
密钥配置
1.生成密钥
ssh-keygen -t ed25519 -C "随便填"
输入指令,然后一路回车。最终可以看到提示id_ed25519保存在某某路径。
2.上传密钥
linux系统
ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@自定义域名.duckdns.org(或者IP)
windows系统
打开Powershell
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh 用户名@域名或IP -p 端口 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
根据提示会要求输入ssh密码,按要求输入即可。
3.测试
此时,再次执行ssh登录就不会要求输入密码了。
一键登录
1.Linux系统一键登录ssh
AI给的一键配置
需要把其中的快捷登录和服务器域名或IP填一下,用户名和端口是通过交互方式填入的。
if [ -n "$ZSH_VERSION" ]; then RC="$HOME/.zshrc"; else RC="$HOME/.bashrc"; fi; read -p "用户名: " u; read -p "端口: " p; echo "alias 快捷登录='ssh -p $p $u@服务器域名或IP'" >> "$RC" && source "$RC" && echo "✅ 输入 快捷登录 即可登录"
或者用这个,服务器域名也会有提示填写。
if [ -n "$ZSH_VERSION" ]; then RC="$HOME/.zshrc"; else RC="$HOME/.bashrc"; fi; read -p "用户名: " u; read -p "端口: " p; read -p "服务器IP或域名: " s; echo "alias 快捷登录='ssh -p $p $u@$s'" >> "$RC" && source "$RC" && echo "✅ 输入 快捷登录 即可登录"
登录
打开终端,输入命令即可一键登录。
快捷登录
2.Win10系统一键登录ssh
配置
PowerShell编辑配置文件
notepad $env:USERPROFILE\.ssh\config
填入内容
Host 一键登录的名字HostName 服务器IP或域名User ssh用户名Port ssh端口号IdentityFile C:\Users\你的Windows用户名\.ssh\id_ed25519
配置完成后,保存。
登录
直接在PowerShell就可以登录,省去了输一长串ssh指令的工作。
ssh 一键登录的名字