ssh密钥登陆(免密登陆)

  • ssh:客户端 sshd:服务端

一、制作密钥对

  • 登陆需要远程的主机,然后输入ssh-keygen开始制作密钥对(需要使用哪个用户登陆就用对应的用户进行制作)
    ssh-keygen
  • 过一会会出现密钥对保存的路径以及密钥锁码配置

  • 可以直接使用默认路径,也可手动输入路径,然后回车即可

  • 密钥锁码可留空,如果设置了,请牢记,因为使用私钥的时候需要输入,接着 按回车键继续即可

  • 会提示再次输入密钥锁码,输入后再按回车键即可(留空的话直接回车即可)

  • 接着会出现提示信息,还有密钥对保存的路径

  • 密钥对制作完成

二、在远程主机上安装公钥

  • 键入以下命令,在远程主机上安装公钥
    cd ~/.ssh
    cat id_rsa.pub >> authorized_keys
  • PS:文件权限一定要设置对,.ssh 权限必须为700,authorized_keys权限必须为644或600
    cd ~
    sudo chmod 700 .ssh
    sudo chmod 644 .ssh/authorized_keys
  • 权限不对无法通过密钥对进行登陆,这是Linux的安全要求

三、修改ssh配置文件,打开密钥登陆功能

Debian/Ubuntu

  • 进入/etc/ssh/sshd_config.d 并新建密钥登陆配置文件
    cd /etc/ssh/sshd_config.d
    sudo touch rsa.config
  • 修改新建的rsa.config文件,配置如下
    RSAAuthentication yes
    PubkeyAuthentication yes
  • 重启ssh服务
    sudo systemctl restart sshd

CentOS

  • 进入/etc/ssh/并修改配置文件sshd_config
    cd /etc/ssh
    sudo nvim sshd_config
  • 配置如下
    RSAAuthentication yes
    PubkeyAuthentication yes
  • 可能还需要一个配置,如下(一般默认配置已经配好,如果没有,并且不能免密登陆,请加入该配置)
    AuthorizedKeysFile .ssh/authorized_keys
  • 重启ssh服务
    sudo systemctl restart sshd

四、客户端配置密钥登陆

  • 将私钥下载到客户端
    scp username@ip:/home/username/.ssh/id_rsa .
  • 修改客户端的ssh配置文件,没有则新建
    cd ~/.ssh
    nvim config
  • 配置示例如下
Host pi # ssh使用的名称,可自定义,方便记忆
    User pi # 远程主机用户名
    ServerAliveInterval 60 # 每60秒发送一个KeepAlive请求,保证终端不会因为超时空闲而断开连接
    HostName pi.mi  # 远程主机域名/IP
    Port 22 # 远程主机ssh服务端口
    IdentityFile ~/.ssh/pi_id_rsa # 远程主机对应的私钥文件路径(绝对路径,否则在其它目录下登陆会找不到文件)
  • ssh连接远程主机
    ssh pi

五、关闭密码登陆功能(可选)--- 一定先测试,密钥能正常登陆后再关闭密码登陆

  • 配置/etc/ssh/sshd_config,配置如下
    PasswordAuthentication no
  • 重启ssh服务
    sudo systemctl restart sshd
文章作者: zjw57
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 zjw57's blog
Linux Linux SSH
喜欢就支持一下吧