SSH 免密登录(设置后仍需输入密码的原因及解决方法)

Written by

in

文章目录
  • 机器 A (客户端)使用 SSH 免密连接机器 B(服务端)
  • 进入用户目录的 .ssh 目录,生成公钥和私钥 ssh-keygen -t rsa -C "email@domain.com" -f filename 其中,-C 设置注释文字,例如邮箱;-f 指定密钥文件存储文件名 将生成的公钥分发到服务端 方法一:使用 ssh-copy-id 命令,将公钥添加到服务端的 authorized_keys 文件中 ssh-copy-id -i ~/.ssh/filename.pub user@host 其中,user 是要登录服务端的用户名,host 是服务端的 ip 或 domain 方法二:将公钥拷贝到服务端,使用 cat 命令追加到 authorized_keys 文件中 cat filename.pub >> authorized_keys 配置 config 文件 注意:由于密钥认证时默认使用 ~/.ssh/id_rsa 文件作为私钥,因此还需额外配置。如果使用的公钥和私钥是默认名,即 id_rsa,则该步可跳过 在 ~/.ssh 目录下新建一个 config 文件 touch config 编辑 config 文件 vi config 写入以下内容 Host aliyun HostName ip User root IdentityFile ~/.ssh/filename 其中,Host 标识一个配置区段,每个配置区段是用 Host 来区分的,例如我这里使用 aliyun 作为一个配置区段 HostName 指定远程主机名 User 指定登录用户名 IdentityFile 指定密钥认证使用的私钥文件路径 此外,还可以使用 Port 指定远程主机端口号,默认 22
  • 在客户端尝试连接服务端 ssh user@host 若无需输入密码即可登录,则配置成功
      • 1. 需求
      • 2. 客户端配置
      • 3. 测试
      • 4. 设置无效的原因及解决方法
        • 4.1 原因
        • 4.2 解决方法

    机器 A (客户端)使用 SSH 免密连接机器 B(服务端)

    1. 进入用户目录的 .ssh 目录,生成公钥和私钥
    ssh-keygen -t rsa -C "email@domain.com" -f filename
    

    其中,-C 设置注释文字,例如邮箱;-f 指定密钥文件存储文件名

    1. 将生成的公钥分发到服务端

    方法一:使用 ssh-copy-id 命令,将公钥添加到服务端的 authorized_keys 文件中

    ssh-copy-id -i ~/.ssh/filename.pub user@host
    

    其中,user 是要登录服务端的用户名,host 是服务端的 ip 或 domain

    方法二:将公钥拷贝到服务端,使用 cat 命令追加到 authorized_keys 文件中

    cat filename.pub >> authorized_keys
    
    1. 配置 config 文件

    注意:由于密钥认证时默认使用 ~/.ssh/id_rsa 文件作为私钥,因此还需额外配置。如果使用的公钥和私钥是默认名,即 id_rsa,则该步可跳过

    ~/.ssh 目录下新建一个 config 文件

    touch config
    

    编辑 config 文件

    vi config
    

    写入以下内容

    Host aliyun
    HostName ip
    User root
    IdentityFile ~/.ssh/filename
    

    其中,Host 标识一个配置区段,每个配置区段是用 Host 来区分的,例如我这里使用 aliyun 作为一个配置区段
    HostName 指定远程主机名
    User 指定登录用户名
    IdentityFile 指定密钥认证使用的私钥文件路径
    此外,还可以使用 Port 指定远程主机端口号,默认 22

    在客户端尝试连接服务端

    ssh user@host
    

    若无需输入密码即可登录,则配置成功

    1. 客户端私钥文件路径未配置或配置错误

    2. 服务端配置错误

      • 权限错误

      • /etc/ssh/sshd_config 文件配置错误

    1. 检查客户端 ~/.ssh/config 文件,配置方法如前所述

    2. 在服务端修改权限

    chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
    
    1. 配置 /etc/ssh/sshd_config 文件,修改以下内容,启用秘钥验证
    PubkeyAuthentication yes
    

    修改后重启 sshd 服务

    service sshd restart
    

    评论

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    站内搜索