[TOC]

解释

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境[1]。 SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接[2]。 虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。 使用频率最高的场合类Unix系统,但是Windows操作系统也能有限度地使用SSH。2015年,微软宣布将在未来的操作系统中提供原生SSH协议支持(摘自wikipedia)

生成

下面是Mac生成方法:

1 :打开终端 输入 ssh-keygen

然后系统提示输入文件保存位置等信息,连续敲三次回车即可,生成的SSH key文件保存在中~/.ssh/id_rsa.pub

2 然后用文本编辑工具打开该文件,我用的是vim,所以命令是: vim ~/.ssh/id_rsa.pub`

禁忌

同一个网站,多个账户之间 不能共用同一个ssh公钥,这会造成服务器无法判断提交者的身份,所以如果有多个账户在同一个网站的话,还是创建多个ssh证书分别管理比较好。

多证书管理

生成 指定文件名

`ssh-keygen -t rsa -f ~/.ssh/id_rsa.name -C “ssh_name”

创建配置文件

vi ~/.ssh/config

Host aaa.github.com
    HostName [email protected]:aaa
    IdentityFile ~/.ssh/id_rsa.aaa
    User git

    HostName [email protected]
    IdentityFile ~/.ssh/id_rsa
    User git
 

检测是否配置成功

//查看当前rsa list
ssh-add -l 

//如果列表中没有新增的rsa, 添加identifile 把专用密钥添加到 ssh-agent 的高速缓存中:
ssh-add ~/.ssh/test_id_rsa

注: ssh-add 命令是把专用密钥添加到ssh-agent的高速缓存中。是把指定的私钥添加到 ssh-agent 所管理的一个 session 当中。而 ssh-agent 是一个用于存储私钥的临时性的 session 服务,重启之后,ssh-agent 服务也就重置了,session 会话也就失效了。

git 修改config

before after
url = [email protected]:fanyubing/xxx.git url = [email protected]:fanyubing/xxx.git

上传到远端设备~ ssh-copy-id -i .ssh/id_rsa.pub [email protected]

参考:https://my.oschina.net/meilihao/blog/157716