前几天我的工作邮箱收到了一封比特币勒索邮件,刚开始看邮件内容的时候我还以为是自己的服务器被劫持了,吓了一跳,不过这次事情之后,倒是让我开始为服务器的安装问题考虑了,第一步就是这篇文章要记录的,关于 Linux 系统设置 SSH 密钥登陆。

设置 SSH 密钥登陆

生成公钥和私钥

(1)首先进入当前用户的用户目录 /home/username

(2)如果用户目录下面不存在一个 .ssh 的目录,那么就创建这个目录,并设置权限为 700

mkdir -m 700 .ssh

(3)进入 /home/username/.ssh 目录并执行如下命令生成密钥

ssh-keygen -t rsa

执行的过程可以一路 Enter 键就行,是否需要按照提示操作看自己的需求

(4)查看生成的公钥和私钥,可以看到 .ssh 目录下命多了两个文件,其中 id_rsa 就是私钥,这个需要下载到本地或者其他需要登陆当前虚拟机的服务器上面;id_rsa.puh 是公钥,这个需要留在当前服务器,相当于一个锁

[alex@CentOS-1 .ssh]$ ll
total 12
-rw-------. 1 alex alex 3243 Jun  9 15:19 id_rsa
-rw-r--r--. 1 alex alex  739 Jun  9 15:19 id_rsa.pub

导入公钥

虽然虚拟机上面生成了公钥和私钥,但是由于 sshd_config 中配置(这个配置项后续会提到)的公钥名称是 authorized_keys 所以需要把之前的 id_rsa.pub 复制一份并命名为 authorized_keys,这个很简单,在 .ssh 目录下执行复制命令即可:

cp id_rsa.pub ./authorized_keys

本地生成私钥

服务器上面生成了公钥和私钥之后,需要把私钥下载到本地或者其他需要登陆的服务器上面。下载到本地很简单,直接在自己本地创建一个文本文件,把服务器上面的私钥 id_rsa 中的内容复制到本地并保存即可。

更新 ssh 配置文件

使用 sudo vi /etc/ssh/sshd_config 命令修改 SSH 的配置文件,需要修改如下几个行(没有的需要自行创建)

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

重启 sshd 服务

修改完配置之后,需要重启 sshd 服务生效,命令如下:

sudo systemctl restart sshd

本地密钥登陆

服务器上重启完 ssh 服务之后,可以推出登陆,然后在本地使用密钥登陆即可,密钥登陆的方式根据自己使用的软件去使用即可

关闭 SSH 密码登陆

当本地使用密钥登陆成功之后,继续修改 ssh 配置来关闭密码登陆,具体修改的地方是

PasswordAuthentication no

修改完成之后继续执行 sshd 重启命令,然后可以试一下在本地是否还能用密码登陆,如果不能那就修改好了,至此,SSH 密码登陆就已经修改为仅仅使用密钥登陆,服务器被劫持的概念就降低了很多。

删除服务器上的私钥

当本地已经登陆成功之后,为了安全起见,可以把服务器上面的私钥和最初的那个公钥删除,不能把 authorized_keys 给删除了。

cd ~/.ssh
rm -f id_rsa id_rsa.pub 

SSH 修改登录端口

一般情况下,默认的 SSH 登录都是使用的22端口,这个端口是公认的端口,所以被攻击的可能性也会比较大,所以如果想要 SSH 更加安全的话,还可以考虑更换一下登录端口,建议使用下面的操作流程来更换端口。

修改 SSH 配置文件

跟修改登录方式一样,还是修改 SSH 的配置文件 /etc/ssh/sshd_config,修改地方如下(建议先在原有的基础上添加端口,而不是删除22端口)

Port 22  
Port 4399

这个修改的意思是先让 SSH 同时支持两个端口登录,这样的好处是可以先使用新添加的那个端口登录试试,如果成功了再把22端口删除,如果失败了,也不至于导致 SSH 连接不上。

修改完配置之后,还是要重启一下 sshd 服务,重启命令就不再说明了。

打开新端口防火墙

如果服务器配置了防火墙,那么在修改了 SSH 的端口之后需要开放一下新添加的端口,开放防火墙的端口要根据自己的服务器使用的防火墙服务去操作,由于我的服务器是阿里云的,服务器本地的防火墙是通过阿里云的安全组去设置的,所以只需要在安全组中添加更新的端口即可。

使用新端口登录

防火墙搞定之后,可以使用新端口进行 SSH 登录,如果登录成功,那么可以再去修改一下配置文件,把22端口的那个配置删除掉,同时把22端口从防火墙中删除掉,这样就做到了仅仅使用新端口进行 SSH 登录。

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:https://tendcode.com/article/ssh-id_rsa/