获取证书

  • 如果没有证书:输入以下代码生成

    输入后在当前目录下的隐藏文件夹.ssh中生成公钥id_rsa.pub和私钥id_rsa

    期间会让你输入私钥路径和密码,留空默认即可

    生成完成后本地保存私钥,服务器仅保留公钥。

    1
    2
    cd ~ #回到主目录
    ssh-keygen -t rsa #生成证书
  • 如果已拥有证书:上传公钥id_rsa.pub到服务器主目录的文件夹.ssh

设置证书登录

  1. 进入.ssh目录

    1
    2
    cd ~
    cd .ssh
  2. 新建密钥验证文件authorized_keys,并将公钥输出重定向覆盖密钥验证文件

    1
    2
    touch authorized_keys #创建一个名为authorized_keys的空文件,可以使用其他指令
    cat id_rsa.pub >> authorized_keys #将公钥内容导入到authorized_keys文件内
  3. 修改authorized_keys文件权限为600

    1
    chmod 600 authorized_keys #chmod修改权限为600
  4. 修改/etc/ssh/sshd_config如下部分

    1
    2
    3
    RSAAuthentication yes #开启RSA验证(貌似部分没有这个选项
    PubkeyAuthentication yes #是否使用公钥验证
    AuthorizedKeysFile .ssh/authorized_keys #公钥的保存位置
  5. 重启sshd服务

    1
    2
    3
    systemctl restart sshd.service
    #或者
    service sshd restart
  6. 本地使用密钥登录,测试是否有配置问题

  7. 测试无误后再次修改/etc/ssh/sshd_config,把密码登录关闭

    警告!错误的配置会造成无法挽回的后果,请先测试后再关闭密码登录

    1
    2
    3
    systemctl restart sshd.service
    #或者
    service sshd restart

Tips

  • 证书登录对以下文件有权限要求(默认无需修改):

    1
    2
    3
    chmod 700 ~ # 即主目录 权限为 700
    chmod 700 ~/.ssh # 权限为 700
    chmod 600 ~/.ssh/authorized_keys # 权限为 600