1、打开git-bash
,检查SSH kyes是否存在
1 |
$ ls -al ~/.ssh |
2、生成新密钥
1 |
$ ssh-keygen -t rsa -C "yourEmail" -f ~/.ssh/id_rsa |
- 2.1 生成密钥时设置密码,需要额外设置ssh-agent自动运行,见操作:7、SHH key密码配置;
- 2.2 vscode好像暂时不支持设置密码的SSH keys对git操作。说明可见vscode文档:
Resolving hangs when doing a Git push or sync on an SSH host
官方文档:
Generating a new SSH key and adding it to the ssh-agent
3、将公钥【id_rsa.pub】配置到对应的code仓库
4、在ssh-agent中添加私钥
1 2 3 4 |
$ ssh-agent bash # 开启ssh-agent $ ssh-add ~/.ssh/id_rsa # 添加私钥到ssh-agent $ ssh-add -l # 查看私钥列表 $ ssh-add -D # 删除私钥 |
5、修改配置文件
1 2 3 4 5 6 7 8 9 10 |
$ touch config # 创建config文件 # 在config文件中添加内容 # gitlab Host github.com Port 22 HostName github.com PreferredAuthentications publickey IdentityFile C:/Users/yourname/.ssh/id_rsa User yourname |
1 2 3 4 5 6 |
# 配置文件参数 # Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件(可以直接填写ip地址) # HostName : 要登录主机的主机名(建议与Host一致) # User : 登录名(如gitlab的username) # IdentityFile : 指明上面User对应的identityFile路径 # Port: 端口号(如果不是默认22号端口则需要指定) |
6、测试SSH连接
1 |
$ ssh -T git@github.com |
官方文档:
7、SSH key密码操作
生成SSH key
时设置了密码,需要设置ssh-agent
自动运行。
在~/.profile
或 ~/.bashrc
中添加如下内容即可。
官方文档:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
env=~/.ssh/agent.env agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } agent_start () { (umask 077; ssh-agent >| "$env") . "$env" >| /dev/null ; } agent_load_env # agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?) if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then agent_start ssh-add elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then ssh-add fi unset env |
官方文档:
参考: