赞
踩
效代码管理 Codeup 的代码仓库支持 HTTP(S) 和 SSH 两种访问协议,SSH 协议可以实现安全的免密认证,且性能比 HTTP(S) 协议更好。在使用 SSH 协议操作代码仓库前,首先需要生成并上传你的 SSH 公钥,完成 SSH 公钥和用户账号的对应。
注意
windows 用户使用 Git 命令行,请务必使用 WSL(需要windows10或以上),或使用 Git Bash。
通过 SSH 协议在 Git 命令行访问 Codeup,需要具备以下几点:
本机已安装Git
(安装教程参见安装Git)并保证版本大于1.9
(通过git --version
可获取本地的版本);
本机需要安装OpenSSH
客户端(GNU/Linux, macOS, 或 Windows 10 已内置OpenSSH
);
SSH
尽量保持最新,6.5之前的版本由于使用 MD5 签名,可能存在安全问题;
在生成新的 SSH 密钥前,请先确认是否需要使用本地已生成的SSH密钥,SSH 密钥对一般存放在本地用户的根目录下。
在你的计算机命令行中执行以下语句,判断是否已经存在本地公钥。如果返回一长串以 ssh-ed25519 或 ssh-rsa 开头的字符串, 说明已存在本地公钥,你可以跳过「生成 SSH 密钥」步骤。
Linux、Mac 可以直接使用以下命令查看已生成的公钥,Windows 用户在 WSL(需要 windows10 或以上)或 Git Bash下使用以下命令查看已生成公钥:
ED25519 算法
cat ~/.ssh/id_rsa.pub
如果本地没有已存在的SSH密钥,或需要生成新的 SSH 密钥,请按如下步骤操作:
运行ssh-keygen -t
,然后输入密钥算法类型和可选的注释。这个注释会出现在.pub
文件中(与认证无关),一般可使用邮箱作为注释内容。
以ED25519
算法为例,生成 ED25519 密钥对的命令如下:
- ssh-keygen -t ed25519 -C "<注释内容>"
- ps:<注释内容>可改为你的邮箱地址
以RSA
算法为例,生成 RSA 密钥对的命令如下:
- ssh-keygen -t rsa -C "<注释内容>"
-
- ps:<注释内容>可改为你的邮箱地址
回车选择生成路径,以 ED25519 为例:
- Generating public/private ed25519 key pair.
- Enter file in which to save the key (/home/user/.ssh/id_ed25519):
密钥默认生成路径:/home/user/.ssh/id_ed25519
,公钥与之对应为:`/home/user/.ssh/id_ed25519.pub
`。
指定一个口令:
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
口令默认为空,你可以选择使用口令保护私钥文件。
如果你不想在每次使用 SSH 协议访问仓库时,都要输入用于保护私钥文件的口令,可以在创建公钥、私钥文件时,输入空口令。
点击回车,恭喜 SSH 密钥在本地已经生成了。可以在本地查看 SSH 密钥对内容,并将本地已生成的 SSH 公钥拷贝添加至 Codeup 平台。
除了在命令行打印出已生成的公钥信息手动复制外,也可以使用命令拷贝公钥到粘贴板下,请参考操作系统使用以下命令进行拷贝:
cat ~/.ssh/id_ed25519.pub | clip
Mac:
tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopy
GNU/Linux (requires xclip):
xclip -sel clip < ~/.ssh/id_ed25519.pub
点击右上角头像-个人设置-「SSH 公钥」展现 SSH 公钥设置弹窗。
将上述本机已存在的 SSH 公钥粘贴到输入框中,同时为当前公钥命名,便于区分管理。
除此之外,支持设置公钥作用范围,可选择「全部」或「只读」,若设置为只读,该公钥只能用于拉取代码,不允许推送。
如有公钥过期时间限制的需求,可设置该公钥的过期时间,到期后公钥自动失效,不可使用。
设置完成后,点击「添加」保存设置,即可使用该 SSH 密钥对执行代码库操作。
存在一些情况,需要自定义 SSH 认证密钥的路径:
本地需要多个密钥对应多个账号
本地需要多个密钥对应不同的代码平台(GitLab,GitHub等)
打开终端,编辑~/.ssh/config
,如果你使用的是Windows平台,请确认你后续的操作是使用WSL(需要windows10或以上)或使用 Git Bash。
- # Codeup
- Host codeup.aliyun.com
- PreferredAuthentications publickey
- IdentityFile ~/.ssh/id_ed25519
-
- # Codeup 用户2
- Name codeup-user-2
- Host codeup.aliyun.com
- PreferredAuthentications publickey
- IdentityFile ~/.ssh/codeup_user_2_ed25519
-
- # GitLab
- Host gitlab.com
- PreferredAuthentications publickey
- IdentityFile ~/.ssh/gitlab_ed25519
如果按照上述配置,当使用SSH协议访问时,SSH客户端会按照如下方式进行认证,可实现访问不同平台或同一平台的不同账号使用本地不同的 SSH key 进行认证:
- # 访问 Codeup,将使用 ~/.ssh/id_ed25519.pub 密钥
- git clone git@codeup.aliyun.com:example/repo.com
-
- # 以 codeup-user-2 别名访问 Codeup 时,将使用 ~/.ssh/codeup_user_2_ed25519 密钥
- git clone git@codeup-user-2:example/repo.com
-
- # 访问 GitLab,将使用 ~/.ssh/gitlab_ed25519 密钥
- git clone git@gitlab.com:example/repo.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。