关于 SSH
SSH (Secure Shell) 是一种安全的远程登录协议,可以让你通过安全的加密连接进行远程登录。目前,Mac、Windows 10、Linux 系统均有内置 OpenSSH 客户端。如果你想通过 SSH 连接到 Gitea,首先需要创建一对 SSH 密钥(即公钥和私钥),然后将公钥上传到 Gitea。
创建完 SSH 密钥后,在你的本地计算机上,打开一个终端窗口,并运行以下命令:
ssh -T [email protected]
如果你的 SSH 密钥配置正确,这条命令应该能够成功连接到 Gitea。
在这里,git
是一个默认的账号,它是你的 SSH 服务器的登录名,而不是 Gitea 账号或者其他任何名称。gitea.com
是 Gitea 服务器的主机名或 IP 地址。如果你的 Gitea 设置中有相应的 SSH 公钥,这条命令应该能够成功连接到 Gitea。
另外,你还可以使用 SSH 协议操作 Git 其他功能,比如拉取或推送 Git 仓库,或者执行远程命令。例如,要将远程 Git 仓库拉取到本地,你可以运行以下命令:
git clone [email protected]:gitea/awesome-gitea.git
在这条命令中,gitea/awesome-gitea.git
是你的远程 Git 仓库的名称。
生成/添加 SSH 公钥
Gitea 提供了基于 SSH 协议的 Git 服务,在使用 SSH 协议访问仓库之前,需要先配置好账户的 SSH 公钥。
1.打开终端
2.你可以按如下命令来生成 SSH 密钥对。其中的-C "[email protected]"
实际上是一条注释信息,可以填写成你的邮箱地址,并不影响生成密钥的过程。
$ ssh-keygen -t ed25519 -C "[email protected]"
提示: 如果系统不支持较新的 Ed25519 算法,你仍然可以使用 RSA 算法:
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ferris/.ssh/id_ed25519):[回车,使用默认路径]
Created directory '/home/ferris/.ssh'.
Enter passphrase (empty for no passphrase):[可输入密码]
Enter same passphrase again:[再次输入密码]
Your identification has been saved in /home/ferris/.ssh/id_ed25519
Your public key has been saved in /home/ferris/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:BjlFiHdNt3tI95XnKimBpUV2mhBinfm0jOL9JeG+YDg [email protected]
The key's randomart image is:
+--[ED25519 256]--+
| .o+=*+ o |
| ..o+=+o= . .|
| .+. ==.o ..o|
| .o.==. + oo|
| . oS...o . o|
| .o. o..o . |
| E oo.oo . |
| o .o. . |
| .. |
+----[SHA256]-----+
3.按照上述 ssh-keygen
的三次提示分别输入回车、密码、确认密码即可生成 SSH 密钥对。通过查看 ~/.ssh/id_ed25519.pub
文件内容,获取到你的 SSH 公钥。请注意:私钥是 ~/.ssh/id_ed25519
。保护好私钥,不要将私钥泄露到网络上。
cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJZ1HF2aEd61o7/EJ350EbXfOksjjNGdB66CwGVRco1g [email protected]
4.复制生成的 SSH 公钥,通过个人主页 「设置」->「SSH/GPG密钥」->「管理 SSH 密钥」 ,添加生成的 SSH 公钥添加到仓库中。
添加后,在终端(Terminal)中输入
ssh -T [email protected]
首次使用需要确认并添加主机到本机 SSH 可信列表。若返回 Hi there, USERNAME! You've successfully authenticated...
内容,则证明添加成功。
Hi there, USERNAME! You've successfully authenticated with the key named id_ed25519, but Gitea does not provide shell access.
添加成功后,就可以使用 SSH 协议对仓库进行操作了。比如拉取、推送、删除分支。
仓库级别的「部署密钥」和账户级别「SSH密钥」的区别
你可以在仓库主页 「设置」->「部署密钥」->「添加部署密钥」,将 SSH 公钥添加到仓库中。
账户级别的「SSH密钥」同时具备推送/拉取的权限,对用户创建/参与的任意仓库均能使用,应用范围广、使用方便。
仓库级别的「部署密钥」只针对当前设置的仓库,且默认情况下不开启推送权限,我们仅仅将部署密钥用作拉取代码,这通常用于 CI/CD 服务器拉取仓库来执行流水线任务。
另外,如果在填写「部署密钥」时勾选了“启用写权限”,将赋予部署密钥推送权限。
测试 SSH 连接
1.打开终端,使用 ssh -T
测试你的服务器
ssh -T [email protected]
第一次连接服务器时,你会看到以下提示信息:
The authenticity of host 'gitea.com (IP ADDRESS)' can't be established.
RSA key fingerprint is SHA256:Fo6Tm/SLyse8uglFB1JShqQWchU0kcPzSRueD1O9K0I.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
2.输入 yes 验证 Gitea 服务器指纹
Hi there, USERNAME! You've successfully authenticated with the key named id_ed25519, but Gitea does not provide shell access.
如果出现错误,请参考 https://docs.gitea.io/zh-cn/faq/#ssh-issues
[email protected]: Permission denied (publickey).
为 Git 客户端配置多个 SSH 私钥
标签:Git,私钥,gitea,密钥,服务器,com,ssh,SSH From: https://www.cnblogs.com/Gitea/p/ssh.html