deepwzh的技术笔记
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • 操作系统
  • Linux 源码阅读笔记
  • 内存管理
  • 文件系统
  • Windows

    • Windows
    • 端口转发
    • WSL

      • WSL
      • 与 windows 的互通
      • 安装
      • wsl 常见问题
      • 在 wsl 下进行开发
      • 配置
  • Linux

    • Linux
    • 动态追踪技术
    • DNS 配置
    • 问题排查
    • 杂项
    • Linux 免密登录
    • ebpf
    • 性能调优
    • init 进程
    • Ipvs
    • 基准测试
    • Linux
    • Keepalived
    • Linux 与 Unix
    • 系统调用
    • 命令行补全
    • 文件系统

      • 文件系统
      • Mount
    • systemd

      • systemd
      • Systemd
    • 命令工具

      • 命令工具
      • 时区配置
      • 进程管理工具
      • 路由表维护
      • 文件系统工具
      • 网络工具

        • 网络工具
        • curl
        • 端口转发 rinetd
    • 包管理

      • 包管理
      • APT 与 DEB
    • Shell

      • Shell
      • Zsh
      • Bash

        • Bash
        • 配置文件

Linux 免密登录

概述

其他机器需要通过 ssh 连接某台 Linux,除了可以通过密码进行连接外;还可以使用公钥或者私钥的方式进行

相对于密码的方式,后者安全性更好一些,且不需要重复输入密码,即所谓免密登录

原理

  • RSA 加密算法 RSA 算法原理(一) - 阮一峰的网络日志

步骤

前置步骤

开启 ssh 服务

linux
  • 确保被连接机器上的 ssh 处于开启状态
    • 终端输入 sudo service ssh status
    • 看到 active(running) 说明服务正常

生成密钥对

Linux

要生成 rsa 密钥对,只需要打开要被连接的 Linux 终端

键入

ssh-keygen

即可,期间出现的几个选项都可以按回车保持默认值

然后

ls ~/.ssh

可以看到生成的若干文件

id_rsa: 生成的私钥文件

id_rsa.pub: 生成的公钥文件

known_hosts: 已知主机的指纹文件,用于防范中间人攻击 What is known_hosts File in Linux [Everything to Know]

authorized_keys: 这个文件需要用到时手动创建,文件用于控制,哪些公钥被允许连接到这台机器上

复制 id_rsa.pub 里面的内容,即是我们需要的公钥,下一步需要用到

Windows

与 Linux 步骤类似,不同的是,生成的文件存放在了 %HOMEPATH%/.ssh 而已

使用私钥登录

在目标机器上

  1. 执行密钥对生成
  2. 将公钥复制进 authorized_keys
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
# 或将id_rsa.pub的内容手动拷贝到authorized_keys末尾处

在发起连接的机器上

  1. 拿到目标机器的私钥(~/.ssh/id_rsa)
  2. 测试 ssh -i 私钥路径 用户名 @ 主机名,如
ssh -i id_rsa root@192.168.1.11

使用公钥登录

在发起连接的机器上

复制.ssh 目录的 id_rsa.pub 公钥文件的内容

在目标机器上

authorized_keys 文件用于控制,哪些公钥被允许连接到这台机器上

假设上一步复制的公钥是 ssh-rsa fsdfsdfsdfsdf [email protected]

如果要允许一个公钥连接到这台机器,可以使用以下命令

对于 Linux

cd ~/.ssh
echo "ssh-rsa fsdfsdfsdfsdf [email protected]" >> authorized_keys

对于 Windows

进入目录 %HOMEPATH%/.ssh,打开或者新建文件 authorized_keys,在文件末尾加入公钥字符串

ssh-rsa fsdfsdfsdfsdf root@192.168.1.11

测试

经过如上操作,可以尝试进行连接测试了

假设被连接机器的用户名是 root , 机器 IP 是 192.168.1.11

ssh root@192.168.11

不出报错就意味着连接成功了

扩展

ssh 免密登录实现后,可以更方便的进行远程连接开发,详见文档远程开发环境搭建

Prev
杂项
Next
ebpf