0%

免密登录

前言

  • ssh 默认登录需要输入密码,如果有多台机器,且密码都不一样,那么登录的次数多了还是挺折磨的;本着能偷懒就偷懒的原则,给家里的机器和服务器都配上密钥登录,再配合 Windows 的终端 terminal 可不敲命令就能 ssh 登录到机器上

环境

  • 本地机器:Windows 11

  • 远程登录机器:OpenWrt,NAS 群晖,Ubuntu

前提

  • 创建本地 ssh 密钥
  1. 打开终端 terminal

  2. 输入命令

    1
    ssh-keygen -t rsa
  3. 点击三次 Enter 确定,下一步即可

  4. 当前目录下的 .ssh 文件夹中,id_rsa 为私钥,id-rsa.pub 为公钥

OpenWrt

  1. OpenWrt 的免密验证文件是 /etc/dropbear/authorized_keys

  2. 如果有此文件,将本地的 ssh 公钥添加到文件中即可

  3. 如果没有此文件,可用以下命令直接复制本地的公钥,存到 OpenWrt 中,并改名为 authorized_keys

    1
    scp ~/.ssh/id_rsa.pub [email protected]:/etc/dropbear/authorized_keys

    注:本地公钥的目录,以及 OpenWrt 的 ip 需按实际来修改

NAS

  1. 首先 ssh 登录到群晖上,如果当前用户目录下没有 .ssh 文件夹,用以下命令创建

    1
    sudo mkdir ~/.ssh
  2. 用以下命令创建或者打开 authorized_keys 文件,并将本地的公钥粘贴进去

    1
    sudo vim ~/.ssh/authorized_keys
  3. 提升权限

    1
    2
    3
    sudo chmod 755 ~
    sudo chmod 600 ~/.ssh/authorized_keys
    sudo chmod 700 ~/.ssh
  4. 打开 sshd_config 配置文件

    1
    sudo vim /etc/ssh/sshd_config
  5. 修改上述文件中以下几个配置

    1
    2
    3
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys

Ubuntu

  1. 确认服务器已经安装 sshd 服务,并且正常运行

    1
    sudo service sshd status
  2. 显示 Active: active(running) 即为正常,否则需用以下命令安装

    1
    sudo apt-get install -y openssh-server
  3. 将本地公钥添加到 ~/.ssh/authorized_keys 文件中

  4. 允许 root 远程登录,允许免密登录,并修改登录端口

    1
    2
    3
    4
    5
    6
    vim /etc/ssh/sshd_config

    # 找到以下配置并修改
    Port 22
    PermitRootLogin yes
    PubkeyAuthentication yes
  5. 重启 sshd 服务

    1
    service sshd restart