跳至主要内容

SSH 與訪問安全

對遠程服務器和 Git 倉庫的安全訪問從根本上建立在 SSH (Secure Shell) 協議之上。我們利用非對稱加密技術,確保身份驗證憑據永遠不會在網絡上傳輸,並僅存儲在您的本地計算機上。

SSH 加密基礎

SSH 身份驗證依賴於由兩個數學相關文件組成的 公私鑰對

組件默認路徑用途
私鑰~/.ssh/id_ed25519受限訪問。 僅存儲在您的本地計算機上。
公鑰~/.ssh/id_ed25519.pub公開分發。 分發到服務器和 GitHub。
算法建議

我們為所有新密鑰對統一採用 Ed25519 算法。與舊的 RSA 標準相比,它具有更優越的性能和更高的安全性。


基礎設施設置指南

生成密鑰對

執行以下命令生成新的密鑰對:

ssh-keygen -t ed25519 -C "your_email@example.com"
備註

接受默認存儲路徑並為本地加密提供強密碼。

使用 SSH 代理進行管理

使用 SSH 代理在內存中管理已解密的密鑰,從而無需為每次連接重新輸入密碼。

# 初始化 SSH 代理
eval "$(ssh-agent -s)"

# 向代理註冊私鑰
ssh-add ~/.ssh/id_ed25519

與 GitHub 集成

獲取您的公鑰並將其添加到您的 GitHub 設置 → SSH and GPG keys 中。

# 複製到剪貼板或顯示公鑰
cat ~/.ssh/id_ed25519.pub

連通性驗證

ssh -T git@github.com
# 預期輸出: "Hi <username>! You've successfully authenticated..."

高級工作流:代理轉發 (Agent Forwarding)

代理轉發 允許在遠程會話(例如,在服務器或 Docker 容器內)中使用本地 SSH 密鑰,而無需將私鑰複製到這些環境中。

身份驗證工作流

Docker 實現

掛載主機的 SSH 代理套接字以在容器內啟用轉發:

docker run -it \
-v $SSH_AUTH_SOCK:/run/host-services/ssh-auth.sock \
-e SSH_AUTH_SOCK=/run/host-services/ssh-auth.sock \
my-engineering-image bash
安全協議

僅在連接到 受信任的 基礎設施時使用代理轉發。受損的遠程 root 用戶可能會利用您的轉發代理套接字以您的身份進行身份驗證。


SSH 配置策略

通過在 ~/.ssh/config 中定義主機別名來優化連接工作流:

~/.ssh/config
Host production-server
HostName 10.0.0.50
User deploy-user
ForwardAgent yes
IdentityFile ~/.ssh/id_ed25519

工作流效率: 執行 ssh production-server 即可連接,無需手動指定參數。


最佳實踐

定期審核遠程服務器上的 ~/.ssh/authorized_keys 內容,確保只有當前授權的密鑰處於活動狀態。