📜  ssh-keygen 不是交互式的 (1)

📅  最后修改于: 2023-12-03 15:20:20.491000             🧑  作者: Mango

ssh-keygen 不是交互式的

简介

ssh-keygen 是用于生成 SSH 密钥对的命令行工具,可以生成公钥和私钥。其中,私钥存放在用户主目录下的 .ssh 目录中,公钥需要复制到远程主机上的 .ssh/authorized_keys 文件中,以便进行 SSH 免密码登录。

默认情况下,ssh-keygen 会交互式地向用户询问密钥文件名和密码等信息。但是,在某些情况下,需要在脚本中自动生成密钥对,这时候就需要 ssh-keygen 的非交互式模式。

用法

ssh-keygen 的非交互式模式使用命令行参数来指定生成密钥对的各种选项。

以下是 ssh-keygen 命令的一些常见参数:

  • -t: 指定密钥类型。可以是 rsa、dsa、ecdsa、ed25519 等。
  • -b: 指定密钥长度。
  • -C: 添加注释(比如邮箱地址或用户名)。
  • -f: 指定密钥文件名。
  • -N: 设置密钥文件的密码。

例如,下面的命令将生成一个 rsa 类型的 2048 位密钥对,并将公钥和私钥文件分别保存为 id_rsa.pub 和 id_rsa:

ssh-keygen -t rsa -b 2048 -f my_rsa
示例

以下是一个示例,展示如何在 Python 脚本中使用 ssh-keygen 的非交互式模式来生成密钥对:

import os

def generate_ssh_key(key_file, key_length=2048):
    os.system(f'ssh-keygen -t rsa -b {key_length} -N "" -f {key_file}')

generate_ssh_key('my_rsa')

这个函数将生成一个 2048 位的 rsa 密钥对,并将公钥和私钥文件分别保存为 my_rsa.pub 和 my_rsa。