说明 | |
---|---|
首次发布 | 2019年01月12日 |
最近更新 | 2019年05月04日 |
步骤一:生成SSH公钥
-
- 生成
ssh-key
的命令:
ssh-keygen -t rsa -C "xxxxx@xx.com"
接下来,输入和显示大致是这样子,就表示生成成功了。
ssh-keygen -t rsa -C "YourEmail@qq.com" Generating public/private rsa key pair. # 注意:如果这里直接回车,默认会是 `id_rsa`,存储在 `/Users/LynnZhang /.ssh/`目录下 Enter file in which to save the key (/Users/LynnZhang/.ssh/id_rsa): /Users /LynnZhang/.ssh/id_her_rsa Created directory '/Users/LynnZhang/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/LynnZhang/.ssh/id_her_rsa. Your public key has been saved in /Users/LynnZhang/.ssh/id_her_rsa.pub. The key fingerprint is: SHA256:CwJi97FAFKa3ObvSv18NqCZUOnsYQKuw9Z9hdySSczg YourEmail@qq.com The key's randomart image is: +---[RSA 2048]----+ | ...=.. | |. = . E | |o=o+ oE o . | |+++oB o=.o | |o Ooo+.S.. | | . C+.= oo | | .= .+o .. . | | . .= . | | ...o.. | +----[SHA256]-----+
其中,
id_her_rsa.pub
为公钥,id_her_rsa
为私钥。
或者,直接指定存储路径和名称:ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "xxx@xxx.com"
然后,
- a. 要么在终端执行命令查看公钥,
cat ~/.ssh/id_her_rsa.pub
- b. 要么直接进入文件夹
/Users/LynnZhang/.ssh/
查看。
- 生成
- 添加生成的
public key
添加到公钥。
- 添加生成的
-
- 由于我们给生成的公私钥进行了命名,而没有使用默认的
id_rsa
,因此我们还需要将其添加到ssh管理
,命令:
ssh-add ~/.ssh/你的名字
- 由于我们给生成的公私钥进行了命名,而没有使用默认的
-
- 然后再执行下面命令,
ssh -T gitee.com
会提示
The authenticity of host 'gitee.com (114.211.117.14)' can't be established. ECDSA key fingerprint is SHA256:DERT5Kn/eye1W8icdBgrQp+KkGDeRgbVr17bmjey0Wc. Are you sure you want to continue connecting (yes/no)?
输入
yes
,会在~/.ssh
文件夹下生成一个known_hosts
。按常理说,进行到这儿就该结束了。但为了操作更简便,接下来我们进行步骤二。
步骤二:配置 ~/.ssh/config
文件 和 使用别名
-
- 执行下面命令,生成 config 文件:
touch ~/.ssh/config
-
- 配置
~/.ssh/config
如:
# 设置别名,之后就可以通过 `ssh lynn`进行连接 Host lynn # 在没设置别名的情况下,使用 `ssh -T gitee.com` HostName gitee.com User 人民重重 # 指定身份文件'私钥' IdentityFile ~/.ssh/id_rsa_gitee # 设置别名,之后就可以通过 `ssh lynn`进行连接 Host zhang # 在没设置别名的情况下,使用 `ssh -T gitee.com` HostName gitee.com User 人民重重 # 指定身份文件'私钥' IdentityFile ~/.ssh/id_rsa_gitee
连接的使用:
ssh lynn ssh zhang
这样,如果SSH的参数改变的话,修改配置文件就行了,命令不变。
- 配置
最终,~/.ssh
目录下,应该是这个样子:
FQA:
- 报错:
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.
答:请参考 步骤一 第3条。
- 报错:
- 报错:
The authenticity of host 'gitee.com (120.55.226.24)' can't be established.
答:这是因为缺少了known_hosts文件,请参考 步骤一 第4条。
- 报错:
如果你按照我上面所写步骤操作,相信不会有其他问题。
拓展:
一、设置多个远程仓库
- 1、查看当前远程仓库
git remote -v
- 2、添加远程仓库:添加命令中的
github
是远程仓库的名字,可以任意设置,只要不和已有的远程仓库名字相同即可。git remote add github ${github上仓库的地址}
- 3、向指定仓库的指定分支
push
,在执行过下面命令之后,之后使用git push
也将向这个仓库push
。git push -u ${remote_name} ${branch_name}
二、关于 ssh-keygen
命令的说明如下:
ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
[-N new_passphrase] [-C comment] [-f output_keyfile]
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ssh-keygen -i [-m key_format] [-f input_keyfile]
ssh-keygen -e [-m key_format] [-f input_keyfile]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D pkcs11
ssh-keygen -F hostname [-f known_hosts_file] [-l]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -r hostname [-f input_keyfile] [-g]
ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
[-j start_line] [-K checkpt] [-W generator]
ssh-keygen -s ca_key -I certificate_identity [-h] [-U]
[-D pkcs11_provider] [-n principals] [-O option]
[-V validity_interval] [-z serial_number] file ...
ssh-keygen -L [-f input_keyfile]
ssh-keygen -A
ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
file ...
ssh-keygen -Q -f krl_file file ...