前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >给你的SSH加一道防火墙,如何用Kryptonite进行SSH操作

给你的SSH加一道防火墙,如何用Kryptonite进行SSH操作

原创
作者头像
所有的酒都不如你
发布2018-08-01 17:10:52
1.6K0
发布2018-08-01 17:10:52
举报
文章被收录于专栏:云计算教程系列

介绍

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。

准备

要遵循本教程,您需要:

  • 一个运行任何Linux发行版的腾讯云CVM。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器
  • 智能手机:iPhone(iOS 9.1或更高版本)或Android(6.0或更高版本)。
  • 运行macOS(10.10或更高版本),Ubuntu,Debian,RHEL,CentOS,Fedora或Kali Linux的个人计算机。

第一步、生成Kryptonite密钥对

第一步是通过在iOS或Android手机上访问get.krypt.co来下载Kryptonite应用程序。

安装应用程序后,打开它并点击Generate Key Pair创建您的Kryptonite SSH密钥对。如果要使用它来标识公钥,请输入电子邮件。接下来,您需要安装Kryptonite的命令行实用程序。

第二步 - 安装 kr

下一步继续在您的本地计算机上。您需要安装kr命令行实用程序,该实用程序使SSH能够使用存储在Kryptonite中的密钥进行身份验证。您可以kr使用首选的包管理器(如npmbrew)进行安装,或者只是使用curl,就像我们在这里一样。

出于安全原因,如果要在安装之前检查安装脚本,可以运行curl https://krypt.co/kr > install_kr并查看。您可以在kr文档中阅读有关其工作原理以及安装的其他方法的更多信息。

准备好后,安装kr

代码语言:javascript
复制
curl https://krypt.co/kr | sh

系统将要求您启用推送通知。对于Kryptonite通过推送通知发送登录批准请求是必要的。现在您已拥有应用程序,密钥对下一步是将计算机与Kryptonite配对。

第三步 - 将Kryptonite与您的计算机配对

kr安装成功后,运行:

代码语言:javascript
复制
kr pair

QR码将出现在终端中。在Kryptonite应用程序中,点击屏幕底部的“ 允许相机访问”。相机出现后,扫描终端中的QR码。几秒钟后,Kryptonite应用程序将显示成功配对,终端将打印出您的Kryptonite SSH公钥。

让我们测试一下这个密钥对是否有效。

第四步 - 使用Kryptonite测试SSH

要检查一切是否正常,请尝试SSH连接到公共me.krypt.co服务器:

代码语言:javascript
复制
ssh me.krypt.co

您会注意到Kryptonite应用程序上出现了一个请求,要求您批准具有三个选项的SSH身份验证:

  • 允许一次只批准这一个登录me.krypt.co 的请求。
  • 允许1小时批允许1小时批准此请求以及配对计算机的下一个小时的每个其他SSH登录请求。当这些登录发生时,您仍会收到通知,但它们将自动获得批准。
  • 拒绝丢弃此请求,并且您的计算机上的SSH登录失败(或回退到本地密钥)。

点击允许一次。您将看到成功的SSH登录me.krypt.co,它将快速退出伪shell并显示盾牌徽标。

如果您锁定了设备并尝试再次通过SSH连接到me.krypt.co,它将使用预期的命令向您的设备发送推送通知,并要求您从锁定屏幕获得批准。

第五步 - 将Kryptonite Pubkey添加到现有CVM

kr命令行工具可用于将Kryptonite公钥添加到已使用本地SSH密钥或密码访问并且已经运行的CVM。

运行以下命令将您的Kryptonite公钥添加到CVM的授权用户文件中,确保替换您的用户名和CVM的IP地址。

代码语言:javascript
复制
kr add user@your_server_ip

完成此操作后,通过尝试连接SSH来测试它是否正常工作。

代码语言:javascript
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第一步、生成Kryptonite密钥对
  • 第二步 - 安装 kr
  • 第三步 - 将Kryptonite与您的计算机配对
  • 第四步 - 使用Kryptonite测试SSH
  • 第五步 - 将Kryptonite Pubkey添加到现有CVM
  • 结论
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档