技术之道

长风破浪会有时,直挂云帆济沧海

  • 首页
  • 分类
  • 归档
  • 标签

  • 搜索
服务治理 k8s tabnine cursor github copilot ai chatgpt chatgpt ai sop 技术选型 bigdata 工具 多进程多线程 docker 计算机网络 mysql 事务 基础架构 kafka nio 分布式 服务搭建 监控 jvm 管理/成长 jenkins devops 云原生 nginx 架构 故障处理 hive spark mapreduce apm redis memcached java 性能 linux

如何配置SSH Key登录主机资源

发表于 2023-03-24 | 分类于 工具 | 0 | 阅读次数 636

如何配置SSH Key登录主机资源

SSH 和密钥概述

SSH 是一种加密的连接协议,利用该协议可以通过未受保护的连接进行安全登录。 虽然 SSH 提供加密连接,但是将密码用于 SSH 连接仍会使 VM 易受到暴力攻击。 建议使用公钥-私钥对(也称为“SSH 密钥”)通过 SSH 连接到 VM。

  • 公钥放置在 VM 上。
  • 私钥仍保留在本地系统上。 请保护好私钥, 不要透露给其他人。

当你使用 SSH 客户端连接到 VM(具有公钥)时,远程 VM 会测试客户端以确保其具有正确的私钥。 如果客户端具有私钥,则授予其访问 VM 的权限。

根据组织的安全策略,可重复使用单个公钥-私钥对来访问多个主机资源。 无需对要访问的每个 VM 或服务使用单独的密钥对。

可与任何人共享公钥;但只有你(或本地安全基础结构)才应具有对私钥的访问权限。

ssh-keygen 说明

用法概要

 ssh-keygen --help
unknown option -- -
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa] [-m format]
                  [-N new_passphrase] [-C comment] [-f output_keyfile]
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-m format]
                   [-f keyfile]
       ssh-keygen -i [-m key_format] [-f input_keyfile]
       ssh-keygen -e [-m key_format] [-f input_keyfile]
       ssh-keygen -y [-f input_keyfile]
       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
       ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
       ssh-keygen -B [-f input_keyfile]
       ssh-keygen -D pkcs11
       ssh-keygen -F hostname [-f known_hosts_file] [-l]
       ssh-keygen -H [-f known_hosts_file]
       ssh-keygen -R hostname [-f known_hosts_file]
       ssh-keygen -r hostname [-f input_keyfile] [-g]
       ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
       ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
                  [-j start_line] [-K checkpt] [-W generator]
       ssh-keygen -s ca_key -I certificate_identity [-h] [-U]
                  [-D pkcs11_provider] [-n principals] [-O option]
                  [-V validity_interval] [-z serial_number] file ...
       ssh-keygen -L [-f input_keyfile]
       ssh-keygen -A
       ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                  file ...
       ssh-keygen -Q -f krl_file file ...

选项

支持以下选项:

  • –b bits

    指定要创建的密钥的位数。最小位数为 512 位。通常,2048 位足以满足安全需要。密钥大小超过该值并不会提高安全性,反而会降低速度。缺省值为 2048 位。

  • –B

    显示指定的私钥或公钥文件的 bubblebabble 摘要。

  • –c

    请求更改私钥和公钥文件中的注释。该程序会提示您提供包含私钥的文件、口令短语(如果密钥具有一个口令短语)以及新的注释。此选项仅适用于 rsa1 (SSHv1) 密钥。

  • –C comment

    该字段只是为了便于用户识别密钥,可以说明密钥的用途或提供任何有用信息。

  • –e

    此选项读取 OpenSSH 私钥或公钥文件并将密钥以 “SECSH” 公钥文件格式输出到 stdout。此选项允许导出密钥供其他一些 SSH 实现使用。

  • –f

    指定密钥文件的文件名。

  • –F

    在 known_hosts 文件中搜索指定的 hostname,列出找到的任何匹配项。此选项可用于查找散列格式的主机名或地址,还可以与 –H 选项一起使用,以散列格式输出找到的密钥。

  • –H

    对 known_hosts 文件执行散列计算。此选项使用散列形式替换指定文件内的所有主机名和地址。原始内容将移动到后缀为 .old 的文件中。这些散列值通常由 ssh 和 sshd 使用,即使文件内容被公开,这些散列值也并不会透露可识别的信息。此选项不会修改现有的散列主机名,因此可以放心地用于同时包含散列名称和非散列名称的文件。

  • –i

    此选项以 SSH2 兼容格式读取未加密的私钥(或公钥)文件并将 OpenSSH 兼容的私钥(或公钥)输出到 stdout。ssh-keygen 还可读取 “SECSH” 公钥文件格式。此选项允许从其他一些 SSH 实现中导入密钥。

  • –l

    显示指定的私钥或公钥文件的指纹。

  • –N new_passphrase

    提供新口令短语。

  • –p

    请求更改私钥文件的口令短语,而不创建新私钥。该程序会提示您提供包含私钥的文件、旧口令短语,并两次提示您输入新口令短语。

  • –P passphrase

    提供(旧)口令短语。

  • –q

    退出 ssh-keygen。

  • –t type

    指定用于生成密钥的算法,其中 type 是 rsa、dsa 和 rsa1 中的一种。rsa1 类型仅用于 SSHv1 协议。

  • –R hostname

    从 known_hosts 文件中删除属于 hostname 的所有密钥。此选项可用于删除散列主机。请参见 –H。

  • –x

    已过时。已被 –e 选项取代。

  • –X

    已过时。已被 –i 选项取代。

  • –y

    此选项读取 OpenSSH 私钥格式文件并将 OpenSSH 公钥输出到 stdout。

  • –8

    指定 ssh-keygen 生成 PKCS#8 格式的密钥。对于要生成的密钥,支持的类型为 rsa 或 dsa。

使用 ssh-keygen 生成密钥

  1. 登录主机,执行以下命令,生成SSH Key.

    ssh-keygen –t rsa

    回显信息如下:

    ssh-keygen -t rsa
    Generating public/private rsa key pair.
    

    可根据需要配置SSH Key的文件名和密码,回显信息示例如下:

    Enter file in which to save the key (/root/.ssh/id_rsa):置空或输入将生成的文件名,文件保存目录为/root/.ssh。
    Enter passphrase (empty for no passphrase):置空或根据需要输入密码 
    Enter same passphrase again:确认输入密码
    Your identification has been saved in /home/fdipzone/.ssh/id_rsa.
    Your public key has been saved in /home/fdipzone/.ssh/id_rsa.pub.
    The key fingerprint is: f2:76:c3:6b:26:10:14:fc:43:e0:0c:4d:51:c9:a4:b2 root@Server
    The key's randomart image is:
    +--[ RSA 2048]----+
    |    .+=*         |
    |  .  += +        |
    |   o   +         |
    |  E . . o        |
    |    .S.          |
    |      .o .       |
    |       . +       |
    |       ..        |
    |       . +.      |
    +-----------------+
    

    说明:

    参数**-t rsa**表示使用rsa算法进行加密,也可以使用dsa加密算法加密,命令如下:

    ssh-keygen -t dsa

  2. 执行以下命令,查看SSH Key文件

    cd /root/.ssh(文件保存目录)*/*

    在当前用户SSH Key文件保存目录下,查看已生成私钥id_rsa和公钥id_rsa.pub文件

    回显信息示例如下

    [root@vpn ~]# cd /root/.ssh/
    [root@vpn .ssh]# ll
    total 8
    -rw-------. 1 root root    0 Mar 23 08:45 authorized_keys
    -rw-------  1 root root 1675 Mar 24 06:04 id_rsa
    -rw-r--r--  1 root root  390 Mar 24 06:04 id_rsa.pub
    

​

在服务器上安装公钥

在当前用户/.ssh目录下,执行以下命令,拷贝公钥内容到authorized_keys文件中

cat id_rsa.pub >>authorized_keys

​

将私钥下载到客户端使用

以Xshell登录SSH协议类型资源为例,介绍如何通过SSH客户端登录资源进行运维

  1. 打开本地Xshell客户端工具,选择“文件 > 新建”,新建用户会话。

  2. 配置会话用户连接。

    • 方式一

      1. 选择协议类型SSH,输入云堡垒机实例弹性IP地址,端口号配置为2222,单击

        “确认”

        图1 配置会话属性
        img

      2. 连接到会话,输入云堡垒机用户名,单击

        “连接”

        图2 连接会话
        img

    • 方式二

      在新的空白会话窗口,执行登录命令:协议类型 用户登录名@系统登录IP 端口,例如执行ssh [email protected] 2222。

    • 方式三

      在正在运行的Linux主机会话窗口,执行登录命令:协议类型 用户登录名@系统登录IP -p 端口,例如执行ssh [email protected] -p 2222。

  3. 云堡垒机用户身份验证。

    • 选择密码登录,输入云堡垒机用户密码,单击“确定”。

    • 选择公钥登录,在

      “浏览”

      中选择用户密钥,输入密码,单击

      “确定”

      登录验证成功后,再次登录时该用户在SSH客户端可以免密登录。

    图3 云堡垒机用户身份验证
    img

  4. 登录到云堡垒机系统。

    SSH客户端登录认证支持密码登录、手机短信、手机令牌和动态令牌方式。其中手机短信、手机令牌和动态令牌方式,需配置用户多因子认证,详情请参考用户登录配置。

    • 手机短信:本地密码方式登录后,选择“短信验证码”,输入手机短信验证码。
    • 手机令牌:本地密码方式登录后,选择“手机令牌OTP”,输入手机令牌验证码。
    • 动态令牌:本地密码方式登录后,选择“动态令牌OTP”,输入动态令牌验证码。
  5. 批量导入云堡垒机资源账户。

    解压配置文件压缩包,打开“readme.txt”文件,并参考指导导入资源账户。

    图4 配置文件指导说明
    img

  6. 登录资源账户。

    选择需登录的资源账户,输入系统用户密码,登录资源账户进行运维操作。

    图5 登录到云堡垒机资源账户
    img

# 工具
Kafka源码解读之KafkaController
AI 绘画工具Midjourney
  • 文章目录
  • 站点概览
lw‘Blogs

lw‘Blogs

自信人生二百年,会当水击三千里

80 日志
8 分类
40 标签
RSS
Github E-mail
Creative Commons
© 2025 京ICP备2022025426号-1