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