背景
为了SSH的登录安全,将SSH配置为使用公私钥的方式进行登录
常规配置
配置SSH使用公私钥登录来实现免密的方法,减少了每次登录都需要输入复杂密码与登录的安全问题,配置过程如下
- 检查/etc/ssh/sshd_conf 的配置
- PubkeyAuthentication yes # 启用pubkey认证
- AuthorizedKeysFile .ssh/authorized_keys # 配置用户的认证公钥
- PasswordAuthentication no # 禁用密码认证
- 使用ssh-keygen -t rsa -b 2048 生成密钥对,默认会在/home/{username}/.ssh目录下
- 密钥与权限配置
- 将生成的公钥添加到.ssh/authorized_keys
- 修改.ssh目录权限 chmod 0700 ~/.ssh chown {username}:{groupname} -R ~/.ssh
- 修改authorized_keys文档权限 chmod 0600 ~/.ssh/authorized_keys
- 重启sshd服务使配置生效
- copy私钥文档客户端并妥善保存,将客户端的私钥文件权限设置成0600。这时就可以使用ssh username@host -i identityfile命令进行登录。
通过上面的配置基本就完成了SSH使用公私钥登录的配置。
问题检查
客户端登录提示: Permission denied (publickey,gssapi-with-mic)
- 出现publickey通常是.ssh目录与authorized_keys文件配置的权限问题
- 出现gssapi-with-mic是因为开启了gssapi功能,可以通过在sshd_config中关闭来解决
- GSSAPIAuthentication no
- GSSAPICleanupCredentials no
- GSSAPIStrictAcceptorCheck no
- GSSAPIKeyExchange no
- 出现password是开启了密码登录,但密码认证失败
当我们关闭了gssapi认证,password认证登录方式,只开启pubkeyAuthentication时会提示:Permission denied (publickey),这里注意对认证的文件名,文件权限做仔细的检查,如果还是提示:Permission denied (publickey),可以通过restorecon -FRvv ~/.ssh 命令恢复文件的安全上下文。
记录这遍文章的重点在于restorecon -FRvv ~/.ssh 命令,上面的配置过程在网上也是在大堆,为了方便就在这里再次记录了。我实践时出现上面的问题的过程如下:
- 服务器配置完成后就配置了公私钥登录,配置过程和上面相同,并没有遇到什么问题。
- 因为断电导致服务异常关机,重新开机后通过公私钥登录开始提示:Permission denied (publickey,gssapi-with-mic)
- 通过
restorecon -FRvv ~/.ssh 命令恢复文件的安全上下文解决问题
如果在实践中还遇到了需要记录的其它情况可以在通过评论,私信等方式告知我,将持续记录这一问题的解决方案。
|