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 倉庫的名稱。
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金鑰」同時具備推播/拉取的許可權,對使用者建立/參與的任意倉庫均能使用,應用範圍廣、使用方便。
倉庫級別的「部署金鑰」只針對當前設定的倉庫,且預設情況下不開啟推播許可權,我們僅僅將部署金鑰用作拉取程式碼,這通常用於 CI/CD 伺服器拉取倉庫來執行流水線任務。
另外,如果在填寫「部署金鑰」時勾選了「啟用寫許可權」,將賦予部署金鑰推播許可權。
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/
[email protected]: Permission denied (publickey).