使用ssh-keygen生成密钥

发布时间 2023-12-06 21:54:33作者: DumpInfou

使用 ssh-keygen 生成密钥

参考资料

https://learn.microsoft.com/zh-cn/azure/virtual-machines/linux/create-ssh-keys-detailed

快速开始

以下 ssh-keygen 命令默认在 ~/.ssh 目录中生成 4096 位 SSH RSA 公钥和私钥文件。 如果当前位置存在 SSH 密钥对,这些文件将被覆盖。

# 生成私钥和公钥
ssh-keygen -m PEM -t rsa -b 4096

# 详细生成私钥和公钥
ssh-keygen  -m PEM -t rsa -b 4096 -C "azureuser@myserver" -f ~/.ssh/mykeys/myprivatekey -N mypassphrase
    
# 用私钥生成公钥
ssh-keygen -y -f /path/to/id_rsa > /path/to/new_id_rsa.pub

命令解释

ssh-keygen = 用于创建密钥的程序

-m PEM = 将密钥的格式设为 PEM

-t rsa = 要创建的密钥类型,本例中为 RSA 格式

-b 4096 = 密钥的位数,本例中为 4096

-C "azureuser@myserver" = 追加到公钥文件末尾以便于识别的注释。 通常以电子邮件地址用作注释,但也可以使用任何最适合你基础结构的事物。

-f ~/.ssh/mykeys/myprivatekey = 私钥文件的文件名(如果选择不使用默认名称)。 追加了 .pub 的相应公钥文件在相同目录中生成。 该目录必须存在。

-N mypassphrase = 用于访问私钥文件的其他密码。

-y 私钥生成公钥

-f 指定私钥路径

用法

服务器配置

私钥用于连接,公钥内容写入放在被连接主机的~/.ssh/authorized_keys文件中,同时确保~/.ssh目录权限是700~/.ssh/authorized_keys文件权限是600

配置/etc/ssh/sshd_config以下内容已启用

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no

客户端连接

ssh -i /path/to/private_key_file username@hostname

-i 指定私钥文件路径

/path/to/private_key_file:您要使用的私钥文件的路径。

username:远程服务器上的用户名。

hostname:远程服务器的主机名或IP地址。