Linux服务器密钥认证登录设置

参考:http://blog.sina.com.cn/s/blog_6561ca8c0102vb0d.html

密钥对生成使用小结:

  1. 服务器/客户端均需在用户目录下创建 .ssh 目录 ,设置目录权限为700,生成的公钥/私钥分别放在各自的.ssh 目录下

cd /home/username
mkdir .ssh
chmod -R 700 .ssh

  1. 在客户端生成密钥对

ssh-keygen -t dsa/rsa

  • id_dsa
  • id_dsa.pub
  1. 服务器端.ssh目录中新建一个文件,名为:authorized_keys,将公钥内容拷贝到这个文件中,设置权限600

touch authorized_keys
cat id_rsa.pub >> authorized_keys
chmod -R 600 authorzied_keys

  1. authorized_keys 和 私钥文件的权限均设置为 600
  2. 密钥验证登录

ssh –l 用户名 服务器IP

远程登录系统两种认证方式

1. 密码认证

  1. 传统的安全策略。相对复杂的密码能起到一定的防护作用。
  2. 面临的问题诸如:
  • 密码暴力破解
  • 密码泄露
  • 密码丢失
  • 过于复杂的密码也会对运维工作造成一定的负担

2. 密钥认证

  1. 新型的认证方式。这种认证方式避免了被暴力破解的危险,只要保存在本地的专用密钥不被黑客盗用,攻击者一般无法通过密钥认证方式进入系统。
  2. 密钥认证的方法:公用密钥放在远程服务器上,专用密钥放在本地,当需要登录时,远程公钥和本地密钥进行配对,认证成功,就可成功登录系统。
    个人觉得在客户端生成密钥对,远程将pub 上传到服务器比较安全,就算被拦截了,也没法访问服务器。

客户端密钥的生成和配置

DSA/RSA 密钥的生成和配置:

  1. 在用户目录下新建一个.ssh 目录,并将其目录权限设置为700
mkdir .ssh
chmod 700 .ssh
  1. 进入到.ssh 目录,使用ssh-keygen 命令生成rsa 密钥对
ssh-keygen   -t    rsa
  1. 生成两个文件: id_rsa 和 id_rsa.pub
  • id_rsa 客户端
  • id_rsa.pub 服务器
  1. 在.ssh目录中新建一个文件名为:authorized_keys,将公钥内容拷贝到这个文件中,并将文件权限改为600(仅用户自身有读写权限)
 touch authorized_keys
 cat id_rsa.pub >>  authorized_keys
 chmod  -R  600  authorzied_keys

服务器配置文件设置

  1. 修改配置文件
vi /etc/ssh/sshd_config

PubkeyAuthentication yes                  #启用公告密钥配对认证方式
AuthorizedKeysFile                               .ssh/authorized_keys
RSAAuthentication yes                       # 启用 RSA 认证
PasswordAuthentication no                #禁止密码验证登录,如果启用的话,OpenSSH的 RSA认证登录就没有意义了。
PermitRootLogin no                       #禁止root登录
  1. 重启ssh 服务
service sshd restart

解决SSH免密登录配置成功后不生效问题

https://blog.csdn.net/lisongjia123/article/details/78513244

  1. 查看日志
    执行 sudo cat /var/log/secure 查看系统的安全日志,然后再安全日志中看到SSH登录过程中提示了如下错误:
    Authentication refused: bad ownership or modes for directory /home/skyler
    2. SSH不希望home目录和~/.ssh目录对组有写权限,于是执行以下命令进行更改:

    chmod g-w /home/skyler

你可能感兴趣的:(Linux服务器密钥认证登录设置)