生成SSH密钥(Mac)
SSH密钥是一种无需密码认证电脑的方式。接下来介绍如何生成SSH密钥。

一个公钥和一个私钥组成一组密钥对。即密钥包含两部分:公钥和私钥。

在开始之前,请确认已经安装了git客户端。
第一步:检查是否已有SSH密钥
首先,我们需要检查在你的电脑上是否已经存在了SSH密钥,打开终端,输入”ls -al ~/.ssh”

ls -al ~/.ssh

提示:

# Lists the files in your .ssh directory, if they exist

如果你已经有SSH密钥,则将会显示出一些文件列表。默认情况下,公钥文件名会是以下几种:
id_rsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub

如果你已经有一组成对的公钥和私钥(例如:id_rsa.pub和id_rsa),你可以跳过第二步第三步

第二步:生成新的SSH密钥
在终端输入如下指令,请在双引号中,输入自己的公司邮箱,例如”xxxxxx@email.com"

ssh-keygen -t rsa -b 4096 -C "xxxxxx@email.com"
# Creates a new ssh key, using the provided email as a label 
# Generating public/private rsa key pair.

如果已有密钥对,不想覆盖之前的。用一下命令

ssh-keygen -t rsa -b 4096 -f filename -C "xxxxxx@email.com"

filename 为生成密钥的文件名

详细的 ssh-keygen 命令详解,参照:http://www.jinbuguo.com/openssh/ssh-keygen.html 

强烈建议使用默认路径来保存公钥与私钥文件,所以,当提示您"Enter a file in which to save the key”时,点击Enter键即可。

Enter file in which to save the key (/Users/yourname/.ssh/id_rsa): [Press enter]

您会被要求输入一个密码,建议您可以不输入。直接点击Enter键继续。

Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

接下来终端会打印一些验证信息,类似这个样子:

Your identification has been saved in /Users/youname/.ssh/id_rsa. 
Your public key has been saved in /Users/youname/.ssh/id_rsa.pub. The key fingerprint is: 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db xxxxxx@email.com

生成完毕

id_rsa 私钥        id_rsa.pub:公钥

连接服务器

有两种方法:

第一种:用服务器私钥连接。服务器生成密钥对,将私钥拷贝到客户端机器,通过私钥进行连接。

拿mac举例:将 id_rsa 拷贝至 ~/.ssh 文件夹中,改名

第二种:用客户端公钥连接。客户端生成密钥对,将公钥拷贝到服务器,通过私钥进行连接。

拿mac举例:将 id_rsa.pub 拷贝至 服务器 ~/.ssh 文件夹中,改名

密钥对有密码的需要在客户端添加密码,否则每次连接服务器时都会提示输入密码。

免密登录需要执行

ssh-add -K ~/.ssh/id_rsa

之后会提示输入密码,输入这次密码后,以后就为免密登录。

多个密钥登录多个服务器的情况,需要配置配置文件

sudo vim ~/.ssh/config

修改具体内容

#测试服务器
Host server_one
HostName 127.0.0.1
Port 22
User root
IdentityFile ~/.ssh/one_key

#生产服务器
Host server_two
HostName 127.0.0.2
Port 22
User root
IdentityFile ~/.ssh/two_key

连接时使用

ssh root@127.0.0.1
#或者
ssh server_one