Linux / UNIX 生成 SSH 密钥命令
SSH 使用公钥加密来验证远程计算机,并允许远程计算机验证用户(如果需要)。您可以在任何 Linux 或类 UNIX 操作系统(包括 Mac OS X)上按如下方式创建 ssh 密钥。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | 终端/ssh |
操作系统兼容性 | AIX • Alma • Alpine • Amazon Linux • Arch • BSD • CentOS • Debian • Fedora • FreeBSD • HP-UX • Linux • macOS • Mint • NetBSD • OpenBSD • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • Unix • WSL |
预计阅读时间 | 3 分钟 |
ssh-keygen 命令生成 SSH 密钥
ssh-keygen 命令生成、管理和转换 ssh 客户端和服务器使用的身份验证密钥。输入以下命令生成 ssh 密钥(打开终端并输入命令):
$ ssh-keygen
生成 SSH 密钥如下所示:
Generating public/private rsa key pair. Enter file in which to save the key (/home/vivek/.ssh/id_rsa): Created directory '/home/vivek/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/vivek/.ssh/id_rsa. Your public key has been saved in /home/vivek/.ssh/id_rsa.pub. The key fingerprint is: 58:3a:80:a5:df:17:b0:af:4f:90:07:c5:3c:01:50:c2 vivek@debian The key's randomart image is: +--[ RSA 2048]----+ | .+o++o. | | +E. ++ | | o . o o. | | . o B . | | . B S | | * | | . . | | o | | . | +-----------------+
上述命令会创建 ~/.ssh/ 目录。因此,如果您的用户名是 vivek,则所有文件都存储在 /home/vivek/.ssh/ 或 $HOME/.ssh/ 目录中,如下所示:
- $HOME/.ssh/id_rsa – 您的私钥。请勿与任何人共享此文件。请保密。
- $HOME/.ssh/id_rsa.pub – 您的公钥。
请注意,密码必须与您当前的密码不同,并且不要与任何人共享密钥或密码。此外,请确保您对 $HOME/.ssh/ 目录拥有正确且安全的权限:
$ ls -ld $HOME/.ssh/
$ chmod 0600 $HOME/.ssh/
SSH 密钥已生成,下一步做什么?
您需要将 $HOME/.ssh/id_rsa.pub 文件复制到远程服务器,这样您就可以使用密钥而不是密码登录。使用以下任意一个命令将密钥复制到名为 vpn22.example.net.in 的远程服务器,供 vivek 用户使用:
在某些 *nix 系统(例如 OS X)上可能未安装 ssh-copy-id 命令,请使用以下命令(当提示时提供名为 vivek 的远程用户帐户的密码)在远程主机上安装/附加公钥:
要登录,只需输入:
以下命令将有助于记住密码
$ ssh-copy-id vivek@vpn22.example.net.in
$ ssh vivek@vpn22.example.net.in "umask 077; mkdir .ssh"
$ cat $HOME/.ssh/id_rsa.pub | ssh vivek@vpn22.example.net.in "cat >> .ssh/authorized_keys"
$ ssh vivek@vpn22.example.net.in
$ exec ssh-agent $SHELL
$ ssh-add
$ ssh vivek@vpn22.example.net.in
高级用户可选的 ssh-keygen 命令语法
以下语法指定要创建的 RSA 密钥的位数为 4096(默认值为 2048):
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/aws.key -C "My AWs cloud key"
其中,
- -t rsa:指定要创建的密钥类型。可能的值为“rsa1”(表示协议版本 1)和“dsa”、“ecdsa”、“ed25519”或“rsa”(表示协议版本 2)。
- -b 4096:指定要创建的密钥的位数。
- -f ~/.ssh/aws.key:指定密钥文件的文件名。
- -C“我的AWs云密钥”:设置新评论。
现在安装 ~/.ssh/aws.key,运行:
$ ssh-copy-id -i ~/.ssh/aws.key user@aws-server-ip
使用 ssh 命令测试它:有关更多信息,
$ ssh -i ~/.ssh/aws.key ec2-user@aws-server-ip
请参阅“如何在 Linux / Unix 系统上设置 SSH 密钥”。
结论
您了解了如何使用 ssh-keygen 命令创建和生成 ssh 密钥。
- 如何在 Linux / UNIX 上设置带有 DSA公钥认证的 SSH(无密码登录)
- sshpass:登录 SSH 服务器/使用 Shell 脚本提供 SSH 密码
- keychain:为备份脚本设置安全无密码 SSH 访问
- 使用 man 命令阅读手册页:
$ man 1 ssh
$ man 1 ssh-agent
$ man 1 ssh-add
$ man 1 ssh-keygen - Openssh 手册页在这里