SSH 公钥生成和使用详解_客户端

ssh主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录。

公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案。

工作流程如下:

1.客户端生成RSA公钥和私钥

2.客户端将公钥存放到服务器端

3.客户端请求服务器,服务器将随机字符串发送客户端

4.客户端用私钥加密字符串发送给服务器

5.服务器用公钥解密,正确就允许登陆。

创建一个公钥

在创建公共密钥前,你应该检查一下是否已经存在了一个:

$ ls ~/.ssh

如果在输出列表里已经存在了一个名为 “id_rsa.pub” 或是 “id_dsa.pub” 的文件,这就代表你已经有了一个密钥。

如果没有,则使用如下方法进行创建

SSH公钥生成的过程通常使用ssh-keygen命令。

以下是生成SSH公钥的步骤和示例代码:

  1. 打开终端。
  2. 输入ssh-keygen命令并按回车。
  3. 根据提示选择保存密钥的位置和文件名,也可以直接按回车接受默认设置。
  4. 输入密钥的密码短语(passphrase),或者为空表示不使用密钥短语。
  5. 生成的SSH公钥将保存在指定的文件夹中,同时私钥也会被生成并保存。

示例代码:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这里-t rsa指定密钥类型为RSA,-b 4096指定密钥的位数为4096位,-C后面可以跟注释信息,如你的邮箱。

生成后,默认情况下公钥将保存在~/.ssh/id_rsa.pub,私钥保存在~/.ssh/id_rsa

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tobidobi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/tobidobi/.ssh/id_rsa.
Your public key has been saved in /Users/tobidobi/.ssh/id_rsa.pub.
The key fingerprint is:
87:23:34:de:35:d0:f2:78:05:a4:78:1b:f1:6a:7e:be your_email@example.com
The key's randomart image is:
+--[ RSA 2048]----+
|    . = o        |
|   ..o..         |
|  . o S .        |
| . .      . o    |
|  . + + . o      |
|   . S = + o.    |
|    . . + + . o  |
|       o .       |
|              o .|
|              .Eo|
+-----------------+

Mac系统中,你可以在你 home 目录下的 “.ssh” 目录中找到它们(~./ssh/)。

Windows 中,它们应该存放在 C:\Documents and Settings\your-username.ssh\ 或是 C:\Users\your-username.ssh 中。

如果你想看看你的公钥文件的实际内容,你将会看到这些内容:

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAB3nZaC1aycAAEU+/ZdulUJoeuchOUU02/j18L7fo+ltQ0f322+Au/9yy9oaABBRCrHN/yo88BC0AB3nZaC1aycAAEU+/ZdulUJoeuchOUU02/j18L7fo+ltQ0f322AB3nZaC1aycAAEU+/ZdulUJoeuchOUU02/j18L7fo+ltQ0f322AB3nZaC1aycAAEU+/ZdulUJoeuchOUU02/j18L7fo+ltQ0f322AB3nZaC1aycAAEU+/ZdulUJoeuchOUU02/j18L7fo+ltQ0f322klCi0/aEBBc02N+JJP your_email@example.com

这就是公钥的内容,你需要把它安装在你所需要登陆的远程服务器上。如果你的项目开发团队拥有自己的服务器,那么你只需要把它提供给你的服务器管理员就可以了。如果你使用的是像 GitHub 或 Beanstalk 这样的托管服务,你则必须把它上传到你的帐户上。

你要把公钥的内容完全一模一样地复制出来,你可以使用下面的命令来安全方便地复制这些内容到你的剪贴板上:

$ pbcopy < ~/.ssh/id_rsa.pub            [on Mac]
$ clip < ~/.ssh/id_rsa.pub              [on Windows]

SSH 公钥生成和使用详解_ssh私钥_02