Jimmy 的架站筆記

嗨~我是 Jimmy!我可能不是你認識的第 1 個 Jimmy,但一定是最帥的那個。


如何在 linux 上操作 git - ssh agent forwarding

By Jimmy 2025-07-12
發表於 開發工具
如何在 linux 上操作 git - ssh agent forwarding

一般來說,當你進到一台新的機器上,沒有辦法直接使用 git,因為你的 github account 上並沒有這台機器的 ssh key。

$ git pull
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

比較正規的做法是在機器上 generate 一組 ssh key 後,將 public key 加到自己的 github account 裡。

Adding a new SSH key to your GitHub account

但其實有另一個方法可以讓你更方便的用自己本機的 ssh key 來對遠端的 linux 機器操作 git - ssh agent forwarding。

1. 什麼是 ssh agent forwarding

假設我今天有一組 ssh key: id_ed25519(private key), id_ed25519.pub(public key),我的 github 帳號用這組 ssh keys 來做驗證(也就是我的 github 帳號上會有 id_ed25519.pub),幫我要做 git 操作時,git 會去檢查本機的 ssh 是否有 id_ed25519 ,有的話才能以這個帳號的權限用 git 做操作。

今天我登入一台 linux 機器後,假設叫做 jimmy-server,因為 jimmy-server 上沒有 id_ed25519,所以也就拿不到權限。

比較土法煉鋼的方法就是把 id_ed25519複製到 jimmy-server 上,或是在 jimmy-server 上 gen 一組 ssh keys,再把新的 public key 放到 github account 底下,但兩種都偏麻煩。

ssh agent forwarding 可以將我本機上的 id_ed25519 forward 給 jimmy-server,這麼一來我就可以在不需要複製 private key 的情況下,在 jimmy-server 上用我本機的 ssh key。

2. 操作步驟

2.1 將 private key 加到 ssh-agent

$ ssh-add ~/.ssh/id_ed25519
# 如果是 macos 的話,ssh-agent 會在重開機後就清除這個 private key,可以改用以下指令:
$ ssh-add --apple-use-keychain YOUR-KEY

2.2 調整要 forward 機器的 ssh config

Host jimmy-server
  Hostname 0.0.0.0
  User deploy
  # 加上這行
  ForwardAgent yes

2.3 連進機器後,就可以用 git 了

# 因為有調整 ssh config 的 ForwardAgent,如果沒有調整,需要在後面加上 -A
$ ssh jimmy-server

3. 參考資料

SSH agent forwarding 的應用
Using SSH agent forwarding


你可能也會喜歡

git 常用指令整理

git 常用指令整理

雖然已經每天跟 git 為伍了,也有把常用指令整理整理在一個 markdown 檔,但還是放到網頁上在開發的時候比較容易看~

Read More
你可能不懂 npx

你可能不懂 npx

好吧,也有可能只有我不懂 🤣 最近在深入研究一些前端的技術,才發現一直以來對 npx 的理解好像有一些誤解,於是花了點時間釐清一下錯誤的觀念。

Read More
Docker Desktop 殺手 - OrbStack 教學

Docker Desktop 殺手 - OrbStack 教學

對於一個開發者來說,docker 可以說是幾乎每個人都會接觸到的東西,一直以來,我都以為要在 local 上跑 docker 只有 docker 官方開發的 Docker Desktop 可以用,但目前工作上要跑的 container,不但滿耗資源,起 container 的速度也很慢,本來慢到都打算提辭呈了(誤,直到某天意外發現了一個拯救我職涯的好東西 — 1. 簡介 OrbStack 是個可以完全用來取代 Docker Desktop 的工具。

Read More