Centos免密登录

Centos免密登录。使用私钥登录配有公钥的服务器。

参考链接:

参考链接: CentOS7.4配置SSH登录密码与密钥身份验证踩坑.
参考链接: Centos 7.7 免密登录.
参考链接: ECS服务器配置密钥登录.

一、测试环境

阿里云ECS,操作系统Centos6.5和Centos7。

二、创建用户

Welcome to aliyun Elastic Compute Service!

[root@iZ2zeatz7zyema6cwpjggzZ ~]# useradd rsyncuser
[root@iZ2zeatz7zyema6cwpjggzZ ~]# passwd rsyncuser
Changing password for user rsyncuser.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

三、生成密钥

  1. 切换用户
[root@iZ2zeatz7zyema6cwpjggzZ ~]# su - rsyncuser
 [rsyncuser@iZ2zeatz7zyema6cwpjggzZ ~]$ mkdir /home/rsyncuser/.ssh
  1. 生成密钥
    注意私钥可设置密码
[rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]$ ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/rsyncuser/.ssh/id_rsa):
 Created directory ‘/home/rsyncuser/.ssh‘.
 # 可以输入设置密码,每次使用私钥都需要输入密码;不输入则不验证密码
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/rsyncuser/.ssh/id_rsa.
 Your public key has been saved in /home/rsyncuser/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:0KrowSHBBZ16tHjaQhr+2bcbEyqonlFvkjHxjrMfKCI [rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]_server
 The key‘s randomart image is:
 +---[RSA 2048]----+
 | .o..            |
 |. .+   .         |
 |..+.. . .        |
 |.= +o  o         |
 |=.*+ ...S        |
 |.*o+O.. .        |
 |E+*B+* o         |
 |+.++*...o        |
 |oo.....oo        |
 +----[SHA256]-----+
 [rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]$
  1. 查验密钥
[rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]$ ll /home/rsyncuser/.ssh
total 12
-rw------- 1 rsyncuser rsyncuser  415 Sep 24 17:56 id_rsa.pub
-rw------- 1 rsyncuser rsyncuser 1766 Sep 24 17:56 id_rsa

四、配置公钥

  1. 创建用户
    省略,参考二
  2. 上传公钥
[rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]$ ll /home/rsyncuser/.ssh
total 12
-rw------- 1 rsyncuser rsyncuser  415 Sep 24 17:56 id_rsa.pub
  1. 安装公钥
[rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]$ cat id_rsa.pub >> authorized_keys
[rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]$ ll /home/rsyncuser/.ssh
total 4
-rw------- 1 rsyncuser rsyncuser 415 Sep 24 18:45 authorized_keys

五、修改sshd

  1. 配置/etc/ssh/sshd_config文件
[rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]$ vim /etc/ssh/sshd_config
#root用户能否通过 SSH 登录,默认为yes
 PermitRootLogin yes 
  
#完成全部设置并以密钥方式登录成功后,可以禁用密码登录。为了安全,建议禁用,但是注意一定要在密钥登录可行之后再禁用。
 PasswordAuthentication yes 
 
#默认为yes,是否让 sshd 去检查用户home目录或相关档案的权限数据。如果设置成yes必需保证存放公钥的文件夹的拥有者与登陆用户名是相同的。
#这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入(设置成no可登录)
#这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。
#如果设置成yes,请确保/home/rsyncuser目录权限是755或700,不能是77X;.ssh目录权限是700;authorized_keys文件权限是600。否则会报 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,Password)
 StrictModes no
  
#是否允许密钥登录,仅针对SSH第一代通信协议
#在CentOS7.4中被废除了,CentOS7开始预设使用第二代通讯协议
#第二代SSH通讯协议的密钥验证选项是 PubkeyAuthentication 
RSAAuthentication yes

#允许公钥认证(密钥登录),自制的公钥数据就放置于用户home目录下的.ssh/authorized_keys 内
#替代了第一代协议中的 RSAAuthentication
PubkeyAuthentication yes 
AuthorizedKeysFile ~/.ssh/authorized_keys
  1. 重启sshd服务
# Centos6.5
[root@iZ2zeahwwoknwjr9glhlzfZ ~]# service sshd restart
# Centos7
[root@iZ2zeahwwoknwjr9glhlzfZ ~]# systemctl restart sshd.service