上一篇我们把 frp 跑通了,从公司电脑能 SSH 回家。
但很多朋友对三个安全细节还有疑问:Token 怎么生成才安全?
禁用密码登录会不会影响自己用?
改了配置 sudo 还能用吗?
本文一次说清。
一、安全令牌 auth.token 咋生成?
在 frp 的 frps.toml 和 frpc.toml 中,都要求设置 auth.token,她能防止未授权的客户端连接到你的 frp 服务端。
生成一个安全的 token 非常简单,下面三种方式都中。
方法 A:使用 OpenSSL 生成(推荐)
openssl rand -base64 32
方法 B:使用 Python 一行命令
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
方法 C:使用 pwgen 工具(需提前安装)
pwgen -s 32 1
重要:服务端(frps.toml)和客户端(frpc.toml)中的 auth.token 必须完全一致,否则连接会被拒绝。

二、SSH 禁用密码登录,改为密钥登录(不影响你连别人)
很多朋友担心:在 Mac 上改了 SSH 配置,会不会导致自己无法从 Mac 连接到公司的服务器?
答案是:完全不会,放心整,这个修改只影响别人访问你的 Mac。
为什么不影响你连别人?
/etc/ssh/sshd_config控制的是 SSH 服务端,也就是当别人通过 SSH 访问你的 Mac 时,要不要密码、允不允许 root- 你从 Mac 向外连接 使用的是 SSH 客户端,配置在
~/.ssh/config或/etc/ssh/ssh_config里,和sshd_config毫无关系。
放心操作,你依然可以正常 ssh 公司服务器。
配置步骤
第一步:确保你能用密钥登录自己 Mac
在 Mac 上生成密钥对:
ssh-keygen -t rsa -b 4096
将公钥加入信任列表:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
测试从外网(通过 frp)用密钥登录:
ssh -i ~/.ssh/id_rsa -p 2222 你的Mac用户名@腾讯云IP
如果无需密码就进入,说明密钥登录配置成功。
第二步:禁用密码登录
编辑 SSH 服务端配置文件:
sudo vim /etc/ssh/sshd_config
找到以下行,去掉前面的 #,并修改值:
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
保存退出,重启 SSH 服务:
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
现在任何试图用密码登录你 Mac 的行为都会被拒绝,只有持有你私钥的设备才能连接。
三、禁用 root 登录后,sudo 还能用吗?
为了进一步加固,我们还在 sshd_config 中设置了:
PermitRootLogin no
这会让别人无法直接用 root 身份 SSH 到你 Mac。
但很多朋友担心:这样一来,我从公司连回 Mac 后,是不是 sudo 就失效了?
答案是:完全不影响,放心整
PermitRootLogin no仅仅阻止了 root 用户直接远程登录。- 你用自己普通账户登录后,再执行
sudo提权,这个行为受/etc/sudoers控制,和 SSH 配置无关。
你在公司的终端里:
ssh -p 2222 duozhang@腾讯云IP # 用你自己的账户登录
sudo docker restart hadoop # 仍可正常提权,输入 Mac 账户密码即可
完全OK!
四、整体安全效果总结
- 云服务器安全组只开放了必要的端口,并限制了来源 IP。
- frp 通信受强 token 保护,防陌生人蹭隧道。
- Mac SSH 仅允许密钥登录,禁止密码,杜绝暴力破解。
- 禁止 root 直接登录,普通用户仍可使用
sudo管理。
三招下来,你的远程开发环境既方便又抗揍,可以安心连自己的 Mac了

688

被折叠的 条评论
为什么被折叠?



