我必须为特定软件提供一些用户支持。由于通过电子邮件来回提供支持很乏味,因此我希望获得对用户帐户的临时访问权限。
让我们致电给鲍勃提供支持的用户。以下程序有效吗?
- 通过电子邮件向 Bob 发送我的公共 SSH 密钥
id_rsa.pub
- 然后,Bob 创建了一个备份
authorized_keys
- 然后 Bob 将我的公共 SSH 密钥添加到
authorized_keys
viacat id_rsa.pub >> authorized_keys
- 我以 Bob 用户身份通过 SSH 登录,无需知道 Bob 的密码
- 在我完成故障排除并注销后,Bob 恢复到他的旧状态
authorized_keys
,从而撤销了我的 SSH 访问权限
附带问题:鲍勃如何监控我正在做的事情?由于授予我访问他的用户帐户的权限需要鲍勃给予我很大的信任,因此透明度可能会提高人们对这一措施的接受度。
为了完整起见,以下是我在家测试该过程的方法。
- 我通过电子邮件将我的公共 SSH 密钥发送给 Bob
id_rsa.pub
- 鲍勃添加
screen -x shared
到他的.bashrc
- Bob 启动屏幕会话并附
screen -d -m -S shared
加到它 - 然后,Bob 创建了一个备份
authorized_keys
- Bob 将我的公共 SSH 密钥添加到
authorized_keys
viacat id_rsa.pub >> authorized_keys
- 鲍勃通知我出发
- 我以 Bob 用户身份通过 SSH 登录,无需知道 Bob 的密码。我会自动附加到已经运行的屏幕会话,因此鲍勃可以监视我的操作
- 在我完成故障排除并注销后,Bob 恢复到他的旧状态
authorized_keys
,从而撤销了我的 SSH 访问权限 - Bob 现在可以关闭所有屏幕会话并删除他添加到他的屏幕中的一行
.bashrc
Bob 方面的要求:
- 正在运行的 SSH 服务器
- 必须安装屏幕
这两个工具都可以从 Linux 发行版的软件包存储库中获得。由于沟通是在我和 Bob 之间直接完成的,我认为该解决方案优于评论中提到的 TeamViewer 方法。此外,TeamViewer 不是开源的。
答案1
程序没问题。鲍勃可以编辑您的密钥或恢复备份。考虑一下~/.ssh/authorized_keys
不存在的可能性。
为了监视某人在 shell 中所做的事情,我将使用screen
.
- Bob 添加
screen -R
到 .bashrc - 登录时您将进入屏幕会话。Bob 可以看到您在屏幕会话中键入的所有内容。
(我记得炉边的屏幕命令,可能需要更多配置或测试。查看此文档http://wiki.networksecuritytoolkit.org/index.php/HowTo_Share_A_Terminal_Session_Using_Screen)
答案2
通过电子邮件向 Bob 发送公钥存在“可能可以忽略不计”的信任链问题。 Bob 无法通过标准电子邮件确认您的身份,因为攻击者可能会生成欺骗性电子邮件。我说“可能可以忽略不计”,因为我假设没有攻击者专门针对您作为大型企业,试图生成虚构的流量。简而言之,还有更容易的骗局。但是,您的协议在技术上存在问题。
如果电子邮件使用 S/MIME 进行签名以确认邮件源自您的域,或者使用预共享 PGP 进行签名,那么这不是问题。
如果您不想麻烦地处理电子邮件,您应该将公钥托管在您的网站上HTTPS这样鲍勃就可以自己下载密钥。 然后指示Bob从网站获取密钥以确保安全。