For Tech ·

史上SSH密钥登录最傻瓜教程

前言:

随着各种云的普及以及网民个性化的信息传播需求,VPS成为更多人搭建博客或其他自媒体网站的首选。但是VPS不像虚拟主机有专门的人维护服务器安全,VPS如果不采取一定的加密或安全措施,就相当于把自己暴露在危险的互联网之下,随时可能会被黑客攻击,轻则当机,重则信息丢失,还有可能机密的内容被公之于众。那么怎么让VPS更加安全呢?主要有两个方面:一个是让登录变得安全;一个是让使用过程安全。其中让登录变得安全是最简单且最行之有效的。

一、Linux SSH登录有两种:

1、使用密码验证登录

通常VPS或服务器开通后都是直接提供IP和root密码,使用这种方式就是通过密码方式登录。如果密码不够强壮,而且没有安装DenyHosts之类的防止SSH密码破解的软件,那么系统安全将存在很大的隐患。

2、使用密钥验证登录

基于密钥的安全验证必须为用户自己创建一对密钥,并把共有的密钥放在需要访问的服务器上。当需要连接到SSH服务器上时,客户端软件就会向服务器发出请求,请求使用客户端的密钥进行安全验证。服务器收到请求之后,先在该用户的根目录下寻找共有密钥,然后把它和发送过来的公有密钥进行比较。如果两个密钥一致,服务器就用公有的密钥加密“质询”,并把它发送给客户端软件(putty,xshell等)。客户端收到质询之后,就可以用本地的私人密钥解密再把它发送给服务器,这种方式是相当安全的。

二、生成密钥

我平时登录VPS喜欢使用putty,所以最开始使用puttygen生成密钥对,试了几次都出现:“Server refused our key”,上网查询发现很多人遇到这个问题,这里我们麻烦一点,最好远程在VPS上生成密钥或是使用XShell生成密钥。

1、在VPS服务器端生成密钥

登录远程Linux VPS/服务器,执行:

root@host:~# ssh-keygen -t rsa //运行生成密钥对命令
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): //回车
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): //输入打开私钥用的密码
Enter same passphrase again: //重复上面密码
Your identification has been saved in /root/.ssh/id_rsa. //提示私钥已经存放在/root/.ssh/目录下的id_rsa文件中了。
Your public key has been saved in /root/.ssh/id_rsa.pub.//提示公钥已经存放在 /root/.ssh目录下的id_rsa.pub文件中了。
The key fingerprint is://密钥对应指纹如下
16:22:c5:33:50:20:35:57:6c:b6:f0:33:51:12:21:dd root@host
The key's randomart image is:
+--[ RSA 1024]----+
|=&@Eo+o o.o |
|=o=.S o . o |
| . . . |
| . |
| E |
| |
| |
| |
| |
+-----------------+
root@host:~#

使用winscp,用密码登录VPS,将/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存后面用putty登录时使用。本文主要采用xshell来制作密钥对,远程VPS上直接生成密钥的方式就不详细截图介绍了。

2、应用XShell生成密钥

xshell是一款Windows下的ssh客户端,也很强大,能够按分类保存N多会话、支持Tab、支持多密钥管理等等,管理比较多的VPS/服务器使用xshell算是比较方便的,但个人不喜欢其界面,不如putty简单字节跳动平滑,仅用xshell制作密钥对。

下载、安装、运行XShell,操作步骤及说明见图片:

依次点击菜单:工具 -> 新建用户密钥生成向导
选择RSA,密钥长度1024就可以了,2048更安全,点击下一步
显示公钥已经成功生成,点击下一步
点击保存为文件,将生成的公钥保存成.pub文件
使用默认的名字或是自定义都可以,点击保存,记住存放位置,一会儿上传至VPS
保存公钥后进入用户密钥(私钥)的名称和加密步骤,建议使用密码,点击完成
在接下来的窗口中选中刚刚生成的私钥,点击导出,另存成私钥文件
通常没有后缀名,记住存放位置,一会儿在puttygen中转换使用
在导出保存时会弹出对话框要求输入密码,就是刚才设置的私钥密码

到此为止,公钥、私钥都已经生成了,接下来需要将生成的公钥上传到VPS上并进行设置。

3、应用公钥

使用用winscp,将id_rsa.pub公钥文件上传到VPS上,通常直接传到root文件夹内,接下来使用putty操作会更便捷,因为在winscp中不会默认显示.ssh文件夹。

将id_rsa.pub公钥文件拖到root文件夹中
putty中应用公钥操作说明

我们可以在root文件夹ls看到winscp上传来的id_rsa.pub文件,接下来执行以下命令,把id_rsa.pub文件改名成authorized_keys存放到/root/.ssh文件夹内。这个.ssh文件夹是Linux默认的密钥认证文件存放位置,当然也可以修改成别的文件夹,但要在配置文件中修改成对应的文件夹,比较麻烦,不建议改动。

mv /root/id_rsa.pub /root/.ssh/authorized_keys

在移动完成后,记得使用以下命令修改文件权限属性,保证安全。

chmod 600 /root/.ssh/authorized_keys

接下来使用vi打开ssh配置文件,进行设置,vi的使用方法请自行百度。

vi /etc/ssh/sshd_config

找到RSAAuthentication 和 PubkeyAuthentication 两项,把前面的#删除
找到PasswordAuthentication项,把原来的yes改成no,不再允许纯root密码登录了

service sshd restart //重启ssh服务,重启VPS,应用公钥完成

重新启动VPS
4、转换私钥格式

刚才第2步生成的私钥并不被我常用的ssh登录软件putty所支持,因此我们还得用putty的兄弟puttygen来转换格式。

依次点击Conversions -> Import Key
导入刚才用xshell保存的私钥,会提示输入私钥密码
导入成功后界面,点击Save private key即可保存成为putty使用的ppk文件
在保存时这里需要注意,最好是手动加上后缀名.ppk,不然容易和原来的私钥弄混
5、使用putty和私钥登录VPS
打开putty,Load已经安装公钥的VPS,点击左侧的SSH -> Auth
Browse浏览存放ppk文件的位置,返回左侧上部Session,点击Save保存
登录root时如果出现图中两行英文,表示公钥私钥安装成功,输入私钥密码即可登录
注意,这里的密码不再是root的登录密码,而是在生成私钥时输入的私钥密码

声明:

原创文章,谢绝转载!

参与评论