公共和私有SSH密钥的好处
如果您的无头或远程VPS在互联网上可见,您应该使用公钥身份验证,而不是密码,如果可能的话。 这是因为与单独使用密码相比,SSH密钥提供了更安全的登录方式。 虽然密码可以最终与被破解的蛮力攻击 ,SSH密钥几乎是不可能用蛮力单独破译。 利用公钥认证,每个计算机具有(i)公共和(ii)私有“密钥”(两个数学上相关联的算法,实际上不可能破解)。
今天, OpenSSH的是类Unix系统如Linux和OS X默认的SSH实现基于密钥的身份验证是最安全的身份验证的几种模式与OpenSSH的使用,如普通的口令和Kerberos门票。 其他认证方法仅用于非常特定的情况。 SSH可以使用“RSA”(Rivest-Shamir-Adleman)或“DSA”(“数字签名算法”)密钥。 当SSH被发明时,这两种算法都被认为是最先进的算法,但是DSA近年来被认为不太安全。 RSA是新密钥的唯一推荐选择,因此本教程可以互换使用“RSA密钥”和“SSH密钥”。
当您登录到DigitalOcean VPS时,SSH服务器使用公钥以一种只能通过您的私钥“解锁”的方式“锁定”消息。 这意味着即使是最有能力的攻击者也不能窥探或干扰您的会话。 作为额外的安全措施,一些用户和大多数SSH程序以密码保护格式存储私钥,以提供一个时间窗口,您可以在您的计算机被盗或被破坏的情况下禁用被盗用的公钥。 由于这些原因,对于大多数人来说,公钥认证是比口令更好的解决方案。 事实上,通过不在私钥上使用密码短语,您将能够通过安全的自动登录(例如增量的异地备份)自动化部分配置管理,通过DigitalOcean API管理您的DigitalOcean资产,和更多。
基于密钥的SSH登录
您可以在任意数量的云服务器上保存相同的公钥,而您的私钥保存在您登录到服务器的客户端上。 然后,您可以禁用正常的用户名/密码登录过程,这意味着只有具有有效的私钥/公钥对的人才能登录; 使你的系统更安全,因为它将不会暴力攻击。
自动创建新Droplet
SSH密钥可以服务的另一个有用的目的是创建DigitalOceanDroplet。 如你所知,当你旋转一滴,你必须等待电子邮件与您的密码。 虽然这封电子邮件非常方便,但是有一种更安全(更快)的方式访问您的新云服务器,而不需要电子邮件。 这可以通过保存在你的公钥进行DigitalOcean控制面板 。 要做到这一点:
- 首先完成本教程标题与油灰生成的OpenSSH兼容密钥的章节。
- 然后,跳至第三步 如何使用DigitalOceanDropletSSH密钥 。
先决条件
本教程假定您熟悉DigitalOcean对指导如何登录到您用PuTTY滴(对于Windows用户) 。
PuTTY密钥生成器(又名PuTTYgen)
虽然PuTTY是SSH的客户端程序(除了Telnet和Rlogin之外),但它不是OpenSSH的端口或基于OpenSSH的端口。 因此,PuTTY没有本机支持读取OpenSSH的SSH-2私钥文件。 但是,PuTTY有一个名为PuTTYgen的协同合作伙伴(RSA和DSA密钥生成实用程序),可以将OpenSSH私钥文件转换为PuTTY格式; 允许您从Windows计算机连接到云服务器,增加SSH密钥提供的安全性。
的puttygen是一个免费的开源工具,可以从下载维护者的网站 。 PuTTYgen是您将使用来生成您的SSH密钥以供在PuTTY中使用。 开始,所有你需要做的是下载可执行文件(.exe),并将其保存在您将用于连接到您的VPS的计算机上,例如在桌面上。 您不需要 “安装”的puttygen,因为它是一个独立的应用程序。
生成与PuTTY一起使用的OpenSSH兼容键
使用PuTTYgen生成一组RSA密钥:
- 通过双击其.exe文件启动PuTTYgen实用程序;
- 对于关键生成 ,选择SSH-2 RSA 类型 ;
- 在生成的键字段位的号码 ,请指定不能超过2048 4096(增加了位就更难破解用蛮力方法的关键);
- 点击Generate按钮;
- 四处移动你的鼠标指针在关键部分的空白区域,进度条下面(生成一些随机性),直至进度条满;
- 现在已生成私钥/公钥对;
- 在关键的注释字段,输入您希望任何评论,以帮助您识别此密钥对,后来(如您的电子邮件地址,家庭,办公室等等) -关键的评论是在事件特别有用,你最终创建多个密钥对;
- 可选 :输入的密钥密码领域与重新键入密码相同的密码,在确认密码字段(如果您想不过用你的钥匙自动化进程,你不应该创建一个密码);
- 点击保存公钥按钮和选择自己喜欢的任意文件名(有些用户创建自己命名my_keys计算机上文件夹);
- 点击保存私钥按钮和选择自己喜欢的任意文件名(可以将其保存在同一位置作为公开密钥,但它应该是,只有你可以访问和您不会失去位置!如果你失去了你键并已禁用用户名/密码登录,您将无法再登录!
- 在标粘贴公钥到的OpenSSH authorized_keys文件的文本字段中右键单击并选择全选 ;
- 在同一文本字段中再次右键单击并选择复制 。
注:PuTTY,OpenSSH等使用不同的格式公共SSH密钥。 如果SSH密钥复制:以“---- BEGIN SSH2 PUBLIC KEY ...”,这是错误的格式。 请务必仔细按照说明进行操作。 您的密钥应以“ssh-rsa AAAA ....”开头
保存服务器上的公钥
现在,你需要粘贴文件的〜/ .ssh / authorized_keys中的服务器上复制的公共密钥。
- 登录到目标服务器; 请参见 如何进入你用PuTTY滴登录(对于Windows用户)
- 如果您的SSH文件夹不存在,请手动创建:
- SSH公用密钥粘贴到你的〜/ .ssh / authorized_keys文件( 请参阅 安装和使用的云服务器上Vim的文本编辑器 ):
- 点击
i
的键盘和鼠标右键点击你的鼠标粘贴键。 - 要保存,点击键盘上的下列键(按顺序):
Esc
,:
,w
,q
,Enter
。
mkdir ~/.ssh chmod 0700 ~/.ssh touch ~/.ssh/authorized_keys chmod 0644 ~/.ssh/authorized_keys
sudo vim ~/.ssh/authorized_keys
创建PuTTY概要文件以保存服务器的设置
在PuTTY中,您可以创建(并保存)与各种SSH服务器的连接的配置文件,以便您不必记住并持续重新输入冗余信息。
- 双击其可执行文件启动PuTTY;
- PuTTY的初始窗口是会话类别(导航PuTTY的各种类别,沿窗口的左侧);
- 在主机名称字段中输入您的VPS或它的完全限定域名(FQDN)的IP地址, 请参阅 如何设置与DigitalOcean主机名
- 输入端口字段的端口号(为了提高安全性,考虑改变你的服务器的SSH端口为非标准端口。 参见第五步初始服务器设置与Ubuntu 12.04
- 选择协议下的SSH;
- 沿窗口的左手侧,选择数据的子类别,下连接 ;
- 指定您打算使用,登录时到SSH服务器,其配置文件正在保存,在自动登录用户名字段的用户名;
- 展开SSH子类,下连接 ;
- 突出显示验证子类别,然后单击浏览按钮,在窗口的PuTTY的右手边;
- 浏览您的文件系统并选择您以前创建的私钥;
- 返回到会话类和此配置文件中保存的会议现场,如user@123.456.78.9或user@host.yourdomain.tld输入一个名称;
- 单击保存按钮的加载,保存或删除存储的会话区。
现在,您可以继续登录用户名 @ 1.2.3.4,你将不会被提示输入密码。 但是,如果您设置一个密码在你的公钥,你会被要求在那个时候输入密码(你每次登录的时候,在未来)。
禁用用户名/密码登录
一旦您验证您的基于密钥的登录正在工作,您可以选择禁用用户名/密码登录以实现更好的安全性。 为此,您需要编辑SSH服务器的配置文件。 在Debian / Ubuntu的系统中,该文件位于/ etc / SSH / sshd_config中 。
sudo vim /etc/ssh/sshd_config
点击i
的键盘上的按键和编辑的线条,下面引用:
[...] PasswordAuthentication no [...] UsePAM no [...]
要保存,点击键盘上的下列键(按顺序): Esc
, :
, w
, q
, Enter
。 现在,重新加载SSH服务器的配置:
sudo reload ssh
其他资源
- ;
- 如何在Ubuntu 12.04上使用fail2ban保护SSH? DigitalOcean ;
- 如何使用双重身份验证保护SSH | DigitalOcean ;
- 如何使用Rsync通过SSH复制文件| DigitalOcean ;
- 公共密钥加密| 维基百科 ;
- PuTTY常见问题| 西蒙泰胜 。
一如既往,如果你需要帮助的步骤在这篇文章,寻找到DigitalOcean社区寻求帮助提出你的问题,下面。