发布于 1年前

CentOS Linux SSH秘钥登录配置

登录Linux服务器,除了使用账号密码登录这种方式外,我们也可以使用ssh秘钥来登录。

ssh秘钥登录Linux的方法大体是使用rsa生成公私密钥对,其中吧公钥放在服务器上,而私钥存放在客户端。这样可以达到免密登录。

一、使用ssh-keygen生成RSA秘钥对

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Kc0xeDMJp9Ki0f5sZU1sqdq18lc6MDcClchDuF1oxnM demo@test-server
The key's randomart image is:
+---[RSA 2048]----+
| .=oo . |
| . ..=XoE. |
| . + +=B*= |
| + o.+o@ |
| . . . S.o |
| o * .+.o . |
| = o .= + |
| . o + |
| .. . |
+----[SHA256]-----+

可以看到ssh-keygen在/home/demo/.ssh/目录下生成了两个文件:id_rsa和id_rsa.pub,其中id_rsa为私钥,id_rsa.pub为公钥。

二、把公钥的内容追加到.ssh目录下的authorized_keys文件中

这里分为两种情况:

1、authorized_keys文件存在,里面已存在其他用户登录的公钥,那么只需要把生成的公钥的内容追加到authorized_keys

cat id_rsa.pub >> authorized_keys

注意追加是两个大于号,单个大于号是覆盖

2、如果authorized_keys不存在,则可以直接把id_rsa.pub重命名为authorized_keys

mv id_rsa.pub authorized_keys

三、修改authorized_keys访问权限

将目录.ssh权限设置为700,公钥文件authorized_keys设置为644

$ chmod 700 ../.ssh/
$ chmod 644 authorized_keys

四、修改ssh配置

vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys

这里有一点很重要,在你配置密钥登录成功之前,不要把

PasswordAuthentication 设置no,否则你密钥登录不了,然后又禁止密码登录,就悲剧了

在密钥登录设置成功之后,可以将PasswordAuthentication 设置为no,禁用密码登录了,比较安全

五、使用私钥登录

把生成的私钥id_rsa下载到客户端,客户端登录时选择使用秘钥登录,并且选择与服务器配对的私钥,也就是下载到客户端的私钥id_rsa

©2020 edoou.com   京ICP备16001874号-3