使用ssh密钥登录让linux vps 服务器更安全

一,linux自动生成密钥。

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

ssh-keygen -t rsa

screenshot-vpsxb.net-2023.11.15-10_47_15.png

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

ssh-keygen -t rsa 是一个用于生成 SSH 密钥对的命令。这个命令主要用于在计算机之间建立安全的、加密的通信连接,通常用于远程登录和文件传输等场景。

让我们解释一下这个命令的各个部分:

  • ssh-keygen: 这是生成 SSH 密钥对的命令。

  • -t rsa: 这是命令的一个选项,指定了要生成的密钥的类型。在这种情况下,rsa 表示要生成的密钥类型是 RSA(Rivest-Shamir-Adleman)算法。RSA 是一种非对称加密算法,用于在通信过程中进行加密和身份验证。

执行这个命令将生成两个密钥文件:一个是私钥文件(通常命名为 id_rsa),另一个是公钥文件(通常命名为 id_rsa.pub)。私钥应该保持在本地计算机的安全位置,而公钥可以共享给其他人或其他计算机,以便它们可以通过使用与私钥配对的公钥来验证你的身份和建立安全连接。这对密钥可以用于 SSH 登录或其他需要安全认证的场景

二,将密钥保存到服务器中

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

三,修改远程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