写在前面
查询ssh版本(Linux与Windows系统均可使用)
ssh -V
一、生成公共密钥
私钥:id_rsa
公钥:id_rsa.pub
1.1 ED25519 SSH
Practical Cryptography With Go 一书中表明 ED25519 密钥比 RSA 密钥更为安全。2014年 OpenSSH 6.5 引入 ED25519 SSH 密钥后,当前任何操作系统都可用使用这种密钥。
你可以使用以下命令创建和配置 ED25519 密钥:
ssh-keygen -t ed25519 -C "clerith@163.com"
当然如果你想设置一个密码 来保护你的私钥,可以在提示时输入密码。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
如果成功,你将看到有关ssh-keygen
命令将标识和私钥保存在何处的确认信息。
Your identification has been saved in C:\Users\shoun/.ssh/id_ed25519
Your public key has been saved in C:\Users\shoun/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:6FbkDjD6ZpwAM8ay8100G+yiDt7zT+4do0Kq5xkP1Us clerith@163.com
The key's randomart image is:
+--[ED25519 256]--+
| |
|. . |
|=o o = . |
|o= . =.B |
|o o ..*ES |
| o *.*.+. |
|. ooX oo.o |
|.o.*=oo o o |
| o=+oo+= . |
+----[SHA256]-----+
1.2 RSA SSH
如果你使用 RSA 密钥生成 SSH 密钥,则我们建议你使用4096位( 至少2048 位)的密钥大小. 默认情况下
ssh-keygen
命令会创建一个 1024 位 RSA 密钥.
你可以使用以下命令创建和配置 RSA 密钥,如果需要,可以生成建议的最小密钥大小2048
:
ssh-keygen -t rsa -b 4096 -C "clerith@163.com"
1.3 OpenSSH 6.5 ~ 7.8
在 OpenSSH 7.8 之前,RSA 密钥的默认公共密钥指纹基于 MD5,因此并不安全。
如果你的 OpenSSH 版本介于 6.5 至 7.8(含)之间,请使用-o
选项运行ssh-keygen
,以更安全的 OpenSSH 格式保存你的 SSH 私钥。
ssh-keygen -o -f ~/.ssh/id_rsa
或者,你可以使用以下命令以更安全的加密格式生成新的 RSA 密钥:
ssh-keygen -o -t rsa -b 4096 -C "clerith@163.com"
二、为项目设置 SSH 密钥
如果要根据正在使用的项目代码仓库使用不同的密钥,则可以在代码仓库中执行以下命令:
git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"
这不使用 SSH 代理,并且至少需要 Git 2.10.
三、测试密钥
前置条件将公钥添加到代码仓库
3.1 测试连接
以GitCode举例
ssh -T git@gitcode.com
在你第一次通过 SSH 方式连接到 GitCode的时候,将会询问你是否信任将要连接的 GitCode host地址。当确认 yes
后,会将 GitCode 作为已知主机添加到受信任的 hosts 地址中:
The authenticity of host 'gitcode.com (192.168.0.117)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitcode.com' (ECDSA) to the list of known hosts.
第二次连接
remote: Welcome to GitCode, 2404_87623308