Linux/UNIX:生成SSH密钥

时间:2020-01-09 10:42:15  来源:igfitidea点击:

如何在Linux/UNIX/Mac OS X和* BSD操作系统下生成ssh密钥以进行远程登录? SSH使用公共密钥加密技术对远程计算机进行身份验证,并在需要时允许远程计算机对用户进行身份验证。您可以在任何Linux或者类似UNIX的操作系统(包括Mac OS X)上按以下方式创建ssh密钥。

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/Hyman/.ssh/id_rsa): 
Created directory '/home/Hyman/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/Hyman/.ssh/id_rsa.
Your public key has been saved in /home/Hyman/.ssh/id_rsa.pub.
The key fingerprint is:
58:3a:80:a5:df:17:b0:af:4f:90:07:c5:3c:01:50:c2 Hyman@debian
The key's randomart image is:
+--[ RSA 2048]----+
|   .+o++o.       |
|   +E. ++        |
|  o . o o.       |
|   . o B .       |
|    . B S        |
|       *         |
|      . .        |
|       o         |
|        .        |
+-----------------+

上面的命令创建~/.ssh /目录。
因此,如果您的用户名为Hyman,则所有文件都将存储在/home/Hyman/.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文件复制到远程服务器,以便可以使用密钥而不是密码登录。
使用以下任一命令将密钥复制到Hyman用户的远程服务器vpn22.theitroad.com:

ssh-copy-id [email protected]

在某些* nix系统上,例如OS X ssh-copy-id命令可能未安装,请使用以下命令(在提示您提供名为Hyman的远程用户帐户的密码时)在远程主机上安装/追加公共密钥:

ssh [email protected] "umask 077; mkdir .ssh"
cat $HOME/.ssh/id_rsa.pub | ssh [email protected] "cat >> .ssh/authorized_keys"

要登录,只需执行:

ssh [email protected]

以下命令将有助于记住密码短语

exec ssh-agent $SHELL
ssh-add
ssh [email protected]

高级用户的可选ssh-keygen命令语法

以下语法指定要创建的RSA密钥中的4096位(默认值2048):

ssh-keygen -t rsa -b 4096 -f ~/.ssh/aws.key -C "My AWs cloud key"

其中:

  • -t rsa:指定要创建的密钥的类型。协议版本1的可能值为rsa1,协议版本2的可能值为dsa,ecdsa,ed25519或者rsa。
  • -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