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.
三、生成密钥
- 切换用户
[root@iZ2zeatz7zyema6cwpjggzZ ~]# su - rsyncuser
[rsyncuser@iZ2zeatz7zyema6cwpjggzZ ~]$ mkdir /home/rsyncuser/.ssh
- 生成密钥
注意私钥可设置密码
[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 ~]$
- 查验密钥
[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
四、配置公钥
- 创建用户
省略,参考二 - 上传公钥
[rsyncuser@iZ2zeahwwoknwjr9glhlzfZ ~]$ ll /home/rsyncuser/.ssh
total 12
-rw------- 1 rsyncuser rsyncuser 415 Sep 24 17:56 id_rsa.pub
- 安装公钥
[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
- 配置/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
- 重启sshd服务
# Centos6.5
[root@iZ2zeahwwoknwjr9glhlzfZ ~]# service sshd restart
# Centos7
[root@iZ2zeahwwoknwjr9glhlzfZ ~]# systemctl restart sshd.service