Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
更难的问题是如何安全地存储您的私钥。
通常,开发人员将其私钥存储在~/.ssh
目录中。您可以使用cat ~/.ssh/id_rsa
命令读取您的私钥。您的计算机上的任何应用程序都可能会读取您的SSH私钥,即使它是使用密码加密的。此安全风险的常见解决方案是添加双重认证,对于您创建的每个服务器,您必须配置OpenSSH服务器以使用OATH-TOTP PAM模块并将共享密钥加载到该模块。这是一个耗时的过程,有很多地方会犯错误。此外,每次SSH
到服务器时,都必须在手机上打开应用程序,读取六位数代码,然后将其输入终端。这可能会显着降低您的工作效率。
为了避免配置MFA的缺点,开发人员经常使用USB硬件安全模块来生成和存储SSH公钥-私钥对。这些是支持SSH密钥对的小型USB设备。每次要将SSH连接到服务器时,都要将USB设备插入计算机并按设备上的按钮。USB硬件安全模块通常也没有任何显示屏,因此您不知道您实际批准了哪个登录,并且无法查看您已对其进行身份验证的审核日志。
Kryptonite是一种保护SSH私钥的新解决方案。它免费,易于设置,界面友好,并具有额外的内置安全保护。它不需要服务器端更改,并允许您通过推送通知批准登录请求(无需打开应用程序)。无论您使用哪种机器或服务器进行SSH连接,通知始终都会在您的手机上。
在本教程中,您将在手机上生成与Kryptonite的SSH密钥对,将手机与本地计算机配对,并使用KryptoniteSSH连接到腾讯云CVM。
要遵循本教程,您需要:
第一步是通过在iOS或Android手机上访问get.krypt.co来下载Kryptonite应用程序。
安装应用程序后,打开它并点击Generate Key Pair创建您的Kryptonite SSH密钥对。如果要使用它来标识公钥,请输入电子邮件。接下来,您需要安装Kryptonite的命令行实用程序。
kr
下一步继续在您的本地计算机上。您需要安装kr
命令行实用程序,该实用程序使SSH能够使用存储在Kryptonite中的密钥进行身份验证。您可以kr
使用首选的包管理器(如npm
或brew
)进行安装,或者只是使用curl
,就像我们在这里一样。
出于安全原因,如果要在安装之前检查安装脚本,可以运行curl https://krypt.co/kr > install_kr
并查看。您可以在kr文档中阅读有关其工作原理以及安装的其他方法的更多信息。
准备好后,安装kr
。
curl https://krypt.co/kr | sh
系统将要求您启用推送通知。对于Kryptonite通过推送通知发送登录批准请求是必要的。现在您已拥有应用程序,密钥对下一步是将计算机与Kryptonite配对。
kr
安装成功后,运行:
kr pair
QR码将出现在终端中。在Kryptonite应用程序中,点击屏幕底部的“ 允许相机访问”。相机出现后,扫描终端中的QR码。几秒钟后,Kryptonite应用程序将显示成功配对,终端将打印出您的Kryptonite SSH公钥。
让我们测试一下这个密钥对是否有效。
要检查一切是否正常,请尝试SSH连接到公共me.krypt.co
服务器:
ssh me.krypt.co
您会注意到Kryptonite应用程序上出现了一个请求,要求您批准具有三个选项的SSH身份验证:
点击允许一次。您将看到成功的SSH登录me.krypt.co,它将快速退出伪shell并显示盾牌徽标。
如果您锁定了设备并尝试再次通过SSH连接到me.krypt.co,它将使用预期的命令向您的设备发送推送通知,并要求您从锁定屏幕获得批准。
kr命令行工具可用于将Kryptonite公钥添加到已使用本地SSH密钥或密码访问并且已经运行的CVM。
运行以下命令将您的Kryptonite公钥添加到CVM的授权用户文件中,确保替换您的用户名和CVM的IP地址。
kr add user@your_server_ip
完成此操作后,通过尝试连接SSH来测试它是否正常工作。
ssh user@your_server_ip
您将在手机上收到Kryptonite SSH登录请求。
现在您已经设置了Kryptonite,现在您可以从任何配对的计算机上连接SSH到任何CVM。您的私钥安全地存储在手机上,永远不会离开您的设备。当您允许请求时,私钥用于在设备上本地加密签名SSH登录随机数。然后将此签名发送回您的计算机以完成SSH身份验证。更多Linux教程请前往腾讯云+社区学习更多知识。
参考文献:《How To SSH Securely with Kryptonite on DigitalOcean》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有