38-git-33-配置ssh-key

概述

ssh可以基于密码进行认证,也可以基于密钥去认证用户,基于密钥认证时可以实现免密码登录的效果。

SSH公钥默认存储在账户的主目录下的~/.ssh目录

ssh-keygen生成私钥id_rsa以及对应的公钥

-t选项表示指定密钥的类型(The type of the key to generate)

​ 即指定算法,版本2的ssh协议可以指定的密钥类型有 “dsa”, “ecdsa”, “ed25519”, “rsa”

-C 选项表示用于识别这个密钥的注释 (comment to identify the key )

-f选项表示直接指定密钥生成位置以及密钥的名称,默认id_rsa(私钥id_rsa,公钥id_rsa.pub)

单个

1、生成密钥对

ssh-keygen -t rsa -C "your-email@email.com"

2、查看公钥并复制

cat ~/.ssh/id_rsa.pub

3、登录账户并添加ssh key

多个

1、生成密钥对

GitHub

ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C 'email'

company

ssh-keygen -t rsa -f ~/.ssh/id_rsa.company -C "email"

此时,~/.ssh目录下应该有4个文件:id_rsa.company文件和id_rsa.company.pub文件,还有id_rsa.github文件和id_rsa.github.pub文件。

2、查看公钥并添加到github和gitlab

cat ~/.ssh/id_rsa.pub

3、新增并配置config文件

touch ~/.ssh/config

参数说明:

Host:定义Host的名字,(建议与HostName一致)

HostName:这个是真实的域名地址,要登录主机的主机名。

Port:端口号(如果不是默认22端口,则需要指定端口号)

User:配置登录名,例如:GitHub的username。

IdentityFile:指定私钥文件的路径,也就是id_rsa文件的绝对路径。

PreferredAuthentications:配置登录时用什么权限认证,可设为publickey,password publickey,keyboard-interactive等

内容格式如下:

Host 域名或者IP
User test
IdentityFile ~/.ssh/id_rsa.company
PreferredAuthentications publickey

举例:

// github
Host github.com
HostName github.com
User lee
IdentityFile /Users/lee/.ssh/id_rsa.github
PreferredAuthentications publickey

// company
Host company
HostName 192.168.1.222
User lee
IdentityFile ~/.ssh/id_rsa.company
PreferredAuthentications publickey
git clone git@company:lee/test.git