如何使用PuTTY创建SSH密钥以连接到VPS
2018-04-15
分类:虚拟主机
编辑:
阅读(7997)
公钥和私钥SSH密钥的优点
如果您的无头或远程VPS通过Internet可见,则应尽可能使用公钥认证而不是密码。这是因为与单独使用密码相比,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程序会将私钥存储在密码保护格式中,以便在您的计算机被盗或被窃取时提供一个时间窗口,以供您禁用公用密钥。出于这些原因,对于大多数人来说,公钥认证是一种比密码更好的解决方案。事实上,通过不在您的私钥上使用密码短语,您将能够使用安全的自动登录来自动化部分配置管理,例如增量式异地备份,
基于密钥的SSH登录
您可以将相同的公钥保存在尽可能多的云服务器上,而您的私钥保存在您登录服务器的客户端上。然后,您可以禁用正常的用户名/密码登录过程,这意味着只有拥有有效的私钥/公钥对的人才能登录; 使您的系统更安全,因为它不会受到暴力攻击。
自动创建新的小滴
SSH密钥可以用于的另一个有用的目的是创建DigitalOcean液滴。如你所知,当你旋转一滴水滴时,你必须等待一封包含密码的电子邮件。尽管此电子邮件非常方便,但无需电子邮件即可获得访问新云服务器的更安全(更快)的方式。这可以通过将您的公钥保存在 DigitalOcean控制面板中完成。要做到这一点:
首先完成本教程中标题为生成与PuTTY一起使用的OpenSSH兼容密钥的部分。
然后,跳到第三步的如何使用DigitalOcean液滴SSH密钥。
PuTTY密钥生成器(又名PuTTYgen)
虽然PuTTY是用于SSH的客户端程序(除了Telnet和Rlogin),但它不是基于OpenSSH的端口。因此,PuTTY不具备读取OpenSSH的SSH-2私钥文件的本地支持。但是,PuTTY确实有一个名为PuTTYgen的伴侣(一种RSA和DSA密钥生成工具),可以将OpenSSH私钥文件转换为PuTTY格式; 允许您通过Windows机器连接到您的云服务器,并增加SSH密钥提供的安全性。
PuTTYgen是一个(免费)开源实用程序,可以从维护者的网站下载。您将使用PuTTYgen来生成用于PuTTY的SSH密钥。首先,您需要做的就是下载exectuable文件(.exe)并将它们保存在您用来连接VPS的计算机上,例如在桌面上。你会不会需要“安装”的puttygen,因为它是一个独立的应用程序。
生成与PuTTY一起使用的OpenSSH兼容密钥
使用PuTTYgen生成一组RSA密钥:
通过双击.exe文件启动PuTTYgen实用程序;
对于要生成的密钥类型,请选择SSH-2 RSA ;
在生成的密钥字段中的位数中,指定2048或4096(增加位使得用暴力方法破解密钥更难);
点击Generate按钮;
在进度条下面的Key部分的空白区域移动鼠标指针(以产生一些随机性),直到进度条已满;
私钥/公钥对现在已经生成;
在密钥注释字段中,输入您想要的任何评论,以便稍后帮助您识别此密钥对(例如,您的电子邮件地址;家庭;办公室等) - 关键评论对于您最终创建多个密钥对;
可选:键入在一个密码钥匙密码字段和重新键入相同的密码在确认密码字段(如果你想不过来使用你的密钥自动化的流程,你应该不是创建一个密码);
点击保存公钥按钮并选择你喜欢的任何文件名(某些用户在他们的计算机上创建一个名为my_keys的文件夹);
点击保存私钥按钮并选择你想要的任何文件名(你可以将它保存在与公钥相同的位置,但它应该是一个只有你可以访问的位置,而不会丢失!如果你失去了你的键和已禁用用户名/密码登录,您将不能再登录!);
右键单击标记为公钥的文本字段,粘贴到OpenSSH authorized_keys文件中,然后选择全选 ;
再次右键单击相同的文本字段并选择复制。
注: PuTTY和OpenSSH对公共SSH密钥使用不同的格式。如果您复制的SSH密钥以“---- BEGIN SSH2 PUBLIC KEY ...”开头,则格式错误。请务必仔细按照说明操作。你的密钥应该以“ssh-rsa AAAA ....”开头。
在服务器上保存公钥
现在,您需要将复制的公钥粘贴到服务器上的〜/ .ssh / authorized_keys文件中。
-
登录到您的目标服务器;请参阅如何使用PuTTY登录您的Droplet(适用于Windows用户)
-
如果您的SSH文件夹不存在,请手动创建它:
mkdir〜/ .sshchmod 0700〜/ .ssh touch〜/ .ssh / authorized_keyschmod 0644〜/ .ssh / authorized_keys
-
将SSH公钥粘贴到〜/ .ssh / authorized_keys文件中(请参阅在云服务器上安装和使用Vim文本编辑器):
sudo vim〜/ .ssh / authorized_keys
-
点击i键盘上的按键并右键点击鼠标进行粘贴。
-
要保存,点击键盘上的下列键(按顺序): ,Esc,:,w,。qEnter
创建一个PuTTY配置文件以保存您的服务器的设置
在PuTTY中,您可以创建(并保存)连接到各种SSH服务器的配置文件,因此您不必记住并不断重新输入冗余信息。
-
双击可执行文件启动PuTTY;
-
PuTTY的初始窗口是会话类别(沿着窗口的左侧导航PuTTY的各种类别);
-
在主机名字段中,输入您的VPS的IP地址或其完全限定的域名(FQDN);请参阅如何使用DigitalOcean设置主机名
-
在“端口”字段中输入端口号(为了增加安全性,请考虑将服务器的SSH端口更改为非标准端口。请参阅Ubuntu 12.04初始服务器设置的第五步
-
在协议下选择SSH;
-
沿着窗口的左侧,选择Connection下的Data子类别;
-
在自动登录用户名字段中指定您计划使用的用户名,登录到SSH服务器时的用户名和保存的个人资料;
-
在连接下展开SSH子类别;
-
突出显示Auth子类别并单击PuTTY窗口右侧的Browse按钮;
-
浏览你的文件系统并选择你以前创建的私钥;
-
返回会话类别并在“保存的会话”字段中输入此配置文件的名称,例如user@123.456.78.9或user@host.yourdomain.tld;
-
单击保存按钮以加载,保存或删除存储的会话区域。
现在您可以继续并登录到user@ 1.2.3.4,并且不会提示您输入密码。但是,如果您在公钥上设置了密码短语,则会要求您输入密码(当您每次登录时,将来都会输入该密码)。
禁用用户名/密码登录
验证您的基于密钥的登录是否正常工作后,您可以选择禁用用户名/密码登录以获得更好的安全性。要做到这一点,你需要编辑你的SSH服务器的配置文件。在Debian / Ubuntu系统上,该文件位于/ etc / ssh / sshd_config。
sudo vim / etc / ssh / sshd_config
点击i键盘上的按键并编辑线条,如下所示:
[...]的PasswordAuthentication没有[...]UsePAM没有[...]
要保存,点击键盘上的下列键(按顺序): ,Esc,:,w,。qEnter现在,重新加载SSH服务器的配置:
sudo重新加载ssh
标签: