Authy SSH多用户管理:共享账户下的独立双因素认证实现
在服务器管理中,共享账户的安全始终是一个棘手问题。当多个用户需要使用同一Unix账户访问服务器时,如何确保每个用户都能独立进行双因素认证?Authy SSH提供了完美的解决方案,让共享账户也能实现独立双因素认证,确保每个用户拥有自己的安全令牌,实现真正的责任追溯。
为什么需要共享账户的独立双因素认证?
在团队协作或特定服务器管理场景中,共享账户(如dev、ops或sudo用户)是常见的做法。但传统的双因素认证方案往往将整个账户绑定到单一令牌,存在以下风险:
- 🔐 令牌共享风险:多人共用同一令牌,无法追溯具体操作人
- 🔄 权限管理混乱:无法单独禁用某个用户的访问权限
- 🔒 单点故障:一旦令牌丢失或泄露,整个账户面临风险
Authy SSH通过创新的配置方式,让每个用户在共享账户下拥有独立的双因素认证流程,完美解决了这些痛点。
实现原理:基于SSH密钥的个性化认证
Authy SSH的多用户共享账户方案核心在于利用SSH密钥的command指令特性。通过在authorized_keys文件中为每个用户的SSH密钥附加特定指令,实现不同用户使用独立的Authy ID进行认证。
具体来说,每个用户的SSH密钥行会被配置为:
command="/usr/local/bin/authy-ssh login <USER_AUTHY_ID>" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGRJbWu+WLVXYVADY3iQPE1kA7CIOSqHmskPM8qIAzKzq+1eRdmPwDZNmAvIQnN/0N7317Rt1bmTRLBwhl6vfSgL6677vUwsevPo27tIxdja67ELTh55xVLcJ3O8x2qkZsySgkLP/n+w3MUwLe1ht31AZOAsV7J7imhWipDijiysNgvHyeSWsHqExaL1blPOYJVHcqPbKY4SxFRq/MWeyPf/Sm24MFSKEaY6u0kNx8MLJ1X9X/YxmY9rdvzsZdQ7Z/PYhYt2Ja/0mzfYx2leeP2JQBsVfZZzAoFEPpw6mSP9kJREGe2tXvS9cRenhz/+V0+mvSJKG0f0Zzh428pTzN
这样,当用户使用各自的SSH密钥登录时,系统会自动调用对应的Authy ID进行双因素认证,实现了"一个账户,多人独立认证"的效果。
详细配置步骤:从安装到多用户管理
1️⃣ 基础安装准备
首先确保系统已安装Authy SSH。使用以下命令快速安装:
curl -O 'https://raw.githubusercontent.com/authy/authy-ssh/master/authy-ssh'
sudo bash authy-ssh install /usr/local/bin
安装完成后,你需要一个Authy API密钥,可以通过Authy官网注册获取。
2️⃣ 配置共享账户认证模式
要启用共享账户的多用户认证,需要先修改SSH配置,注释掉全局的ForceCommand指令:
sudo sed -ie 's/^\(ForceCommand.*authy-ssh.*\)/#\1/g' /etc/ssh/sshd_config
这一步是为了避免全局强制双因素认证,转而使用基于SSH密钥的个性化认证方案。
3️⃣ 为每个用户添加独立认证
对于需要共享账户的每个用户,运行以下命令添加其SSH密钥和Authy信息:
sudo authy-ssh protect
执行命令后,系统会引导你输入以下信息:
- 用户的SSH公钥
- 用户邮箱
- 手机号码及国家代码
完成后,Authy SSH会自动修改authorized_keys文件,为每个用户的SSH密钥添加对应的command指令,实现独立的双因素认证。
4️⃣ 验证配置结果
配置完成后,查看authorized_keys文件确认每个用户都有独立的配置:
cat ~/.ssh/authorized_keys
你应该能看到类似以下的内容,每个用户的SSH密钥都绑定了唯一的Authy ID:
command="/usr/local/bin/authy-ssh login 13386" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGRJbWu+WLVXYVADY3iQPE1kA7CIOSqHmskPM8qIAzKzq+1eRdmPwDZNmAvIQnN/0N7317Rt1bmTRLBwhl6vfSgL6677vUwsevPo27tIxdja67ELTh55xVLcJ3O8x2qkZsySgkLP/n+w3MUwLe1ht31AZOAsV7J7imhWipDijiysNgvHyeSWsHqExaL1blPOYJVHcqPbKY4SxFRq/MWeyPf/Sm24MFSKEaY6u0kNx8MLJ1X9X/YxmY9rdvzsZdQ7Z/PYhYt2Ja/0mzfYx2leeP2JQBsVfZZzAoFEPpw6mSP9kJREGe2tXvS9cRenhz/+V0+mvSJKG0f0Zzh428pTzN
command="/usr/local/bin/authy-ssh login 20" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyvj2d0rSDukDT04mK7njUxtXffUrOnDCm2Bqub0zN7LQS733nBHp89aMuBI5ENjw1SQ2qXhLxvK1Xhr0pQr+dOWNn3emQjQuiA+YL39yp2RLLpflerJ3KAVY09CHYLFxdKj/DJgXsH+LMAPe2uVmWCP2xAV5ZcLnz3CdS2SX/EVlbNrftesZx9uAbmwKPLY1pmW7q/75AhJRow8VTP7zM/VS7jEHkj03g51BZGB8tMI3G8RDVEDtu2jVwZiq+8BaNCyjYVlsLfu6uGhnXeeUS3swu/atlt+pxy+QTf/HGvrJR58tER+foqheWtV3LqXN4oLckzqTVkDDmnNJlmrpYQ==
5️⃣ 重启SSH服务使配置生效
根据不同的Linux发行版,使用相应的命令重启SSH服务:
Ubuntu/Debian:
sudo service ssh restart
RedHat/CentOS:
sudo /sbin/service sshd restart
SUSE:
sudo /etc/rc.d/sshd restart
非交互式命令支持:自动化工具的无缝集成
对于需要使用scp、sftp、git push等非交互式命令的场景,Authy SSH提供了环境变量支持。只需简单配置,即可让自动化工具也能顺畅工作:
- 编辑
sshd_config文件,添加环境变量支持:
sudo nano /etc/ssh/sshd_config
添加以下内容:
AcceptEnv AUTHY_TOKEN
- 在客户端的
~/.ssh/config中添加发送环境变量的配置:
nano ~/.ssh/config
添加以下内容:
Host *
SendEnv AUTHY_TOKEN
- 使用时在命令前附加令牌:
AUTHY_TOKEN="valid-token" git push origin master
AUTHY_TOKEN="valid-token" scp server:path/to/file local-file
管理与维护:灵活的用户权限控制
使用Authy SSH的多用户共享账户方案,你可以轻松管理每个用户的访问权限:
- 添加新用户:只需再次运行
sudo authy-ssh protect并输入新用户信息 - 移除用户:直接从
authorized_keys文件中删除对应的用户密钥行 - 查看用户列表:通过
cat /usr/local/bin/authy-ssh.conf查看所有已配置的Authy用户ID
这种管理方式使得团队协作更加灵活,同时保持了严格的安全控制。
总结:安全与便捷的完美平衡
Authy SSH的多用户管理方案为共享账户提供了理想的安全解决方案,它实现了:
✅ 独立认证:每个用户拥有自己的双因素认证令牌 ✅ 责任追溯:通过不同的Authy ID追踪具体操作人 ✅ 灵活管理:轻松添加或移除用户,无需修改账户本身 ✅ 无缝集成:支持自动化工具和非交互式命令
无论你是小型团队还是大型企业,这种方案都能帮助你在保持便捷协作的同时,确保服务器访问的安全性。开始使用Authy SSH,为你的共享账户添加最可靠的双因素认证保护吧!
要开始使用,只需克隆仓库并按照安装指南操作:
git clone https://gitcode.com/gh_mirrors/au/authy-ssh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



