push
和 pull
操作经常使用,也都熟能生巧了。但初始设置用的次数一般都很少,忘记再查也是很麻烦,这里就根据我自己的经验和之前查到的资料做一个简单记录,希望对初学者有帮助。这里主要以GitLab为例,但GitHub的步骤也大致相同。
Git是一个分布式版本控制系统,这意味着你可以在本地工作,然后将更改共享或“推送”到服务器。
很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用ssh url克隆到本地。
然而,为什么绝大多数人会使用https url克隆呢?
这是因为,使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了。而使用ssh url克隆却需要在克隆之前先配置和添加好ssh key。
因此,如果你想要使用ssh url克隆的话,你必须是这个项目的拥有者。否则你是无法添加ssh key的。
所以两者的区别为:
push
的时候是需要验证用户名和密码的;而ssh在push
的时候,是不需要输入用户名的,如果配置ssh key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。要使用ssh与GitLab通信,您需要:
要与GitLab通信,您可以使用以下SSH密钥类型:
管理员可以限制允许的密钥及其最小长度。
《Practical Cryptography with Go》一书表明,ED25519密钥比RSA密钥更安全、性能更高。
OpenSSH 6.5在25519年引入了ED2014 ssh密钥,它们应该在大多数操作系统。
现有文档表明,ED25519比RSA更安全。
如果使用RSA密钥,美国国家科学技术研究院在出版物800-57 第3部分(PDF)中建议密钥大小至少为2048位。默认密钥大小取决于您的版本。
有关详细信息,请查看已安装命令的页面ssh-keygenmanssh-keygen
。
在创建密钥对之前,请查看密钥对是否已存在。
.ssh/.ssh/ssh
。算法 | 公钥 | 私钥 |
---|---|---|
ED25519(首选) | id_ed25519.pub | id_ed25519 |
RSA(至少 2048 位密钥大小) | id_rsa.pub | id_rsa |
DSA(已弃用) | id_dsa.pub | id_dsa |
ECDSA | id_ecdsa.pub | id_ecdsa |
首先在使用SSH之前要先设置全局范围的用户名:user name和邮箱:email。
# 查看配置
git config --list
git config --global -l
git config -l
#git status
git config --global user.name "docker"
git config --global user.email "[email protected]"
cd ~/.ssh
ls
或者
ls -al ~/.ssh
看是否存在id_rsa和id_rsa.pub,或者类似但秘钥类型不同的文件,如果存在,说明已经有ssh Key。没有的话,创建新的ssh key。
rm -rf ~/.ssh/*
输入之后会出现一个提问选择,输入:y,确认即可。
ssh-keygen -t
,后跟密钥类型和可选注释。此注释包含在创建的文件中。ssh-keygen -t ed25519 -C ""
即-t ed25519
:密钥的类型;-C "
:用于识别密钥的注释,一般大家都写的是Email邮箱。
对于2048位RSA:
ssh-keygen -t rsa -b 2048 -C ""
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
完成后会在.ssh目录生产两个文件:id_ed25519(私有密钥)和id_ed25519.pub(公开密钥)。
tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopy
Linux(需要软件包):xclip
xclip -sel clip < ~/.ssh/id_ed25519.pub
Git Bash on Windows:
cat ~/.ssh/id_ed25519.pub | clip
替换为您的文件名。例如,用于RSA:id_rsa.pub替换上面的id_ed25519.pub
2. 登录GitLab。
3. 在右上角,选择您的头像。
4. 选择首选项。
5. 在左侧边栏中,选择“ssh 密钥”。
6. 在“密钥”框中,粘贴公钥的内容。如果手动复制了密钥,请确保复制整个密钥,以ssh-ed25519或ssh-rsa开头,可能以注释结尾。
7. 在“标题”文本框中,键入说明,如“工作笔记本电脑”或“家庭工作站”。
8. 可选的。在“失效时间”框中选择失效日期。(在GitLab 12.9中引入。)过期日期仅为信息,并不阻止您使用关键。但是,管理员可以查看过期日期和在删除键时使用它们作为指导。
ssh -T [email protected]
The authenticity of host 'gitlab.example.com (35.231.145.151)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.example.com' (ECDSA) to the list of known hosts.
键入yes并按回车键。
3. 再次运行该命令ssh -T [email protected]
。您应该会收到*欢迎来到 GitLab,@username!*消息。
如果未显示欢迎消息,可以通过在详细模式下运行ssh来进行故障排除:
ssh -Tvvv [email protected]