阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

采用密钥方式登录Linux服务器

130次阅读
没有评论

共计 2977 个字符,预计需要花费 8 分钟才能阅读完成。

最近刚刚开了一个 VPS,查看内存占用的时候,发现有很多 sshd 进程占用了大量内存和 CPU 资源,一搜才意识到问题的严重性。互联网上有大量骇客进行扫描行为,采用密码登录方式的话,简单密码会在不久后被扫描工具字典破解;如果被针对性攻击的话,位数短的密码也很快就会被密码爆破的方式暴力破解,不说服务器沦为肉鸡,密码也会被加入到字典中广为流传,如果其他服务器也采用相同密码,那就很容易在扫肉鸡的过程中全部沦陷。

可以通过加长密码长度、改变 ssh 端口的方式,来提升被破解的难度;不同服务器使用不同密码,来避免一旦失陷,自己的常用密码会成为字典中的一员。但是密码长度过长、个数过多,会增加记忆难度,建议就是采用密钥方式来登录服务器。

一、密钥登录机制

这里使用的是 RSA 加密算法,RSA 是基于密钥对的对称加密算法,公钥加密的内容只能用私钥解开,反之亦然。密钥方式登录,就是服务端保存公钥,客户端保存私钥,在登录的时候,服务器用公钥加密一段随机内容发给客户端,客户端用私钥解出后,再发给服务器,服务器验证解出的内容是否正确,正确即密钥验证通过。

密钥登录方式,可以和密码登录方式同时使用,先验证了密钥,再验证账号密码,不冲突。

密钥登录方式,多个密钥可以关联同一个账号,这样多个人需要使用同一个账号的时候,可以给他们分发不同的密钥,如果要停止某人的使用权限,只需要在服务器上删除对应的公钥就可以了。

二、密钥生成

密钥对可以在任意设备上生成,不过最方便的还是在被登录的服务器上生成,这样会生成密钥的时候就可以省略账号和服务器信息了。输入以下命令生成一个 RSA 密钥对

ssh-keygen -t rsa -b 3072

- t 参数指定加密算法为 rsa,- b 参数指定密钥长度,可以是 1024、2048、3072 等等,位数越长,被暴力破解所需的时间越久。会提示输入密钥文件名、口令

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
79:77:a2:0d:39:d9:e2:00:e7:f8:62:1e:c6:e1:ed:92 root@localhost.localdomain
The key's randomart image is:
+--[RSA 3072]----+
|                 |
|                 |
|      . .        |
|       = . +     |
|      o S B + .  |
|     o + + B o   |
|      B.o o .    |
|     +E+         |
|      ...        |
+-----------------+

root 用户生成的密钥文件名默认为“/root/.ssh/id_rsa”,不需要改变的话直接回车即可

口令是用于加密私钥文件内容的,口令不正确将不能解出私钥内容,这样即使私钥文件丢失了,只要不知道口令,光有私钥文件也无法使用,建议设置。

以上命令执行后,会生成私钥文件“/root/.ssh/id_rsa”和公钥文件“/root/.ssh/id_rsa.pub”,打开公钥文件,会看见

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCz9JrfvDiQLvrNbmIMsvJqSNAmKuNW0tbW99l7Kh1s26pm7BAlm3F6HnxVGD/huxogQbuyReD/TsQduhA1P3xvQ7j2YGk4PrYBu4OMIPeJWgLH3pJvPuT+YHxIRBCF07gCfHRfjTVIJAjreh78veGlOkHubVt3+BZrwkOfZJ3d08o/1T6bqgtQfZK1vbdaE8Xege5qtxzYz5XzqCogd8lzR2ZG+7Y4IZNavPDwLMJY6k3XZwVwrhP+vTpaxOPF13SR1v+sdBMxI3wRShdz9hdMUQ3Ih5SxmolgKKkYAdkfu+1zEkhkv0VEqjsdMvc0AoFWRvlIYMjMMlOtkhic2XZM/mjB30HZrOE6YAEz+/y9bHwx3nBAEkq2g/CY/TZXhG8JcGo/68S+KL2yz95ffMMpW6mtB7mtgtvxiMN8sWh+E/e6Lyre2kAu1l7DVi0McSQ91LIHo9OAqa+whhGlTlHTivzP3pCKgMNBgpia0JvMf9TLaIOUvEV7NUpqh0Hsr50= root@localhost.localdomain

最后的“root@localhost.localdomain”是该密钥所关联的用户,服务器名为“localhost.localdomain”,用户是“root”,ssh-keygen 不指定参数的情况下生成的公钥文件默认和当前用户及本机关联。

二、服务器配置

1、导入公钥

默认的公钥配置文件为用户目录下的“.ssh/authorized_keys”,每一行为一条公钥配置信息。

首先要确认”.ssh”目录存在,权限为 700,如果第一步是在本机上进行的,那么就没问题。

然后将公钥文件的内容追加到“authorized_keys”中就可以了,如果 authorized_keys 之前不存在,则需要将权限设为 600

cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys

2、配置 sshd

CentOS 7 系统,修改 sshd 服务的配置文件

vi /etc/ssh/sshd_config

确认以下配置项的值,”#“后为注释

# 是否允许 RSA 密钥对方式登录系统,仅针对 version 2。
RSAAuthentication yes
PubkeyAuthentication yes

# 密钥配置文件名称,为用户目录下的.ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys

# 禁用密码登录,可以先确认客户端可以密钥登录后再改 
PasswordAuthentication no

重新启动 sshd 服务后生效

service sshd restart

三、客户端配置

1、Bitvise SSH Client

Bitvise SSH Client 是一款 Windows 平台下的 SSH 工具,在 login 选项卡中,进入“Client key manager”,Import 私钥文件,然后登录方式“Initial method”选择 publickey,选择刚才导入的 Clientkey,如果有私钥口令在 Passphrase 中填入,就能以密钥方式登录

2、Linux Shell

在使用 ssh 命令的时候,用“-i”参数指定私钥文件即可,私钥文件权限应改为 600,假设私钥文件为“myservkey”

ssh xxx.xxx.xxx.xxx -i myservkey

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-12/149719.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2977字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中