使用SSH密钥登录让Linux VPS服务器更安全

linux admin 来源:使用SSH密钥登录让Linux VPS服务器更安全 3年前 (2022-01-22) 2742次浏览 0个评论

环境:

CentOS Linux release 8.2.2004 (Core)

Linux主机的远程登陆通常有两种方式,一是通过提供IP和密码的方式进行登陆;二是使用密钥进行验证登陆。本文记录了通过密钥实现验证登陆的配置过程。

 

通过密钥验证登陆的基本思想如下

基于密钥的安全验证需要为用户创建一对密钥,从而使得对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在欲登录的服务器上,而private key为特定的客户机所持有。

当客户机向服务器发出建立安全连接的请求时,首先发送自己的public key,如果这个public key是被服务器所允许的,服务器就发送一个经过public key加密的随机数据给客户机,这个数据只能通过private key解密,客户机将解密后的信息发还给服务器,服务器验证正确后即确认客户机是可信任的,从而建立起一条安全的信息通道。

通过这种方式,客户机不需要向外发送自己的身份标志“private key”即可达到校验的目的,并且private key是不能通过public key反向推断出来的。这避免了网络窃听可能造成的密码泄露。客户机需要小心的保存自己的private key,以免被其他人窃取,一旦这样的事情发生,就需要各服务器更换受信的public key列表。

实现通过密钥验证登陆的配置过程主要分为以下4个步骤:

  • 生成密钥;
  • 将密钥保存到远程服务器;
  • 使用客户端测试使用密钥登陆;
  • 修改远程Linux服务器sshd服务配置;

一、生成密钥

生成密钥的方式有多种,这里主要介绍3中生成方式,分别是通过ssh-keygen、xshell、puttygen生成。

1.通过ssh-keygen方式生成密钥

如果你使用的是Linux主机,那么我们可以通过ssh-keygen的方式生成一对密钥,具体方法是在终端输入以下命令:

ssh-keygen -t rsa

上述命令的意思是通过rsa加密的方式生成一对密钥,过程如下:

imagef865fcdf814b253f.png

通过上述过程,我们就在/home/centos/.ssh/目录下生成了两个文件id_rsa和id_rsa.pub两个文件(生成过程这里都是回车默认生成的),分别为私钥和公钥文件,公钥文件(id_rsa.pub)就是在接下来需要放置在要远程登陆的服务器上的文件,而id_rsa就是要保存到进行远程登陆的客户端的私钥文件。

2.通过xshell方式生成密钥

你也可以在windows客户端主机上使用xshell生成密钥,你可以在这里下载家庭和学校的免费版本(Home & School user,可能你得注册一个账号才能下载)。使用xshell生成密钥的方法如下:

运行xshell5,点击顶部菜单”工具(Tools)”–>”新建用户密钥生成向导(New User key wizard)”

image1ae2b83ec475ce9b.png

image4a647436529721bf.png

image34da582341da1ab9.png

image565d62024bce8517.png

 

通过上述步骤,我们就得到了一个id_rsa_2048.pub文件(当然,你可能命名了其他名字),这个就是接下来我们需要放置在要进行远程登陆的公钥文件。

二、将密钥保存到远程服务器

1.如果是通过ssh-keygen生成的密钥对,那么我们需要将id_rsa.pub文件放置到你要进行远程登陆的用户主目录下,比如这里的用户名为centos,主目录为/home/centos,那么我们需要将id_rsa.pub公钥放置到/home/centos/.ssh目录下,然后执行以下操作:

  • 执行mv ./id_rsa.pub ./authorized_keys,将id_rsa.pub文件,重命名为 authorized_keys;
  • 执行chmod 600 ./authorized_keys 命令,修改权限;
  • 执行chmod 700 ~/.ssh修改主目录下.ssh目录的权限为700;
  • 执行命令 sudo vi /etc/ssh/sshd_config进行配置,将PubkeyAuthentication 后面的值改成yes ,保存;
  • 重启sshd服务(Debian/Ubuntu执行sudo /etc/init.d/ssh restart ;CentOS执行:sudo /etc/init.d/sshd restart)。

注:centos7重启服务方式与以前不同,请执行systemctl restart sshd.service

2.如果是通过xshell方式生成的密钥对,那么将xshell生成的id_rsa.pub文件放置到用户的主目录下的.ssh目录(比如/home/centos/.ssh),接下来执行的操作跟上述操作[1 ] 是一样的。

三、使用客户端测试使用密钥登陆

1.使用xshell进行密钥登陆

运行xshell5,顶部菜单”文件”->”新建”,接下来使用xshell进行登陆的步骤如下:

imaged3f8afab128fdebd.png

image30854834049209c0.png

点击确定,登陆成功!

四、修改远程Linux服务器sshd服务配置

此时,我们是可以通过密码和密钥验证两种方式进行登陆的,我们需要设置以后只能通过密钥验证的方式进行登陆,具体设置的步骤如下:

  1. 修改/etc/ssh/sshd_config文件,将PasswordAuthentication yes 修改成 PasswordAuthentication no
  2. 重启sshd服务,Debian/Ubuntu执行sudo /etc/init.d/ssh restart ;CentOS执行:sudo /etc/init.d/sshd restart

注:centos7重启服务方式与以前不同,请执行systemctl restart sshd.service
至此,设置完成,不过我们需要保存好生成的私钥文件。

参考文章:http://www.vpser.net/security/linux-ssh-authorized-keys-login.html


VPS小白 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用SSH密钥登录让Linux VPS服务器更安全
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址