在 NAS 上透過 SSH 克隆 GitLab 並推送時,出現了以下錯誤。
ssh: connect to host gitlab.com port XX: Network is unreachable
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
這表示 Git 無法連接到 GitLab 伺服器。QNAP 控制面板中的 Telnet/SSH 已勾選允許 SSH 連線(僅管理員可遠端登入)。請問在 QNAP 上,除了這個設定之外,還有其他需要設定的地方才能進行 SSH 連線嗎?謝謝您的協助。
1個讚
@ommo 先生
目前可以透過 SSH 連線到 NAS 嗎?
關於 SSH 的部分,似乎是 SSH 伺服器端允許的加密方式有所變更,曾經有過舊版 TeraTerm 無法連線的情況。
如果懷疑是 SSH 連線的問題,建議可以檢查這方面的設定。
照字面理解,感覺像是 NAS 端用於 SSH 連線的埠沒有開啟,建議也可以檢查一下 QuFirewall 等防火牆設定。
看起來好像有嘗試連線到 gitlob.com,不過請問 push 的目標是哪裡呢?
我的理解是,在 NAS 上架設了 gltlab git 伺服器,從客戶端可以 clone,但 push 不成功。是這樣的情境嗎?
也可以試試看把 push 的目標設為 NAS 的 IP 位址等,也許會有幫助。
1個讚
@Harinezumi 您好
感謝您的回覆。
我並未使用 TeraTerm 或 QuFirewall。
按照您的建議,將推送目標改為 NAS 的 IP 位址後,嘗試進行 clone 時出現了以下錯誤:
fatal: could not create work tree dir ‘project’: Permission denied
即使使用 http 方式 clone,也出現了同樣的錯誤。
關於 gitlab 的連線,我參考了以下內容。
[GitLab プロジェクト作成→commit→push ssh接続]
懇請您能協助我解決這個問題,感激不盡。
※補充
再次移動目錄並嘗試後,結果如下:
・將 git@XXXX:lab/project.git 從 gitlab 的 SSH clone 指令直接複製時
$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
ssh: Could not resolve hostname XXXX: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
・將 git@XXXX:lab/project.git 改為 NAS 的 IP 位址時
$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
git@XXXX’s password:
這裡要求的密碼我不太清楚是什麼密碼。
我已嘗試 gitlab 和 QNAP 的密碼。
查看 QuLog Center 時,發現有多次登入失敗的警告。
@ommo 先生
如果出現錯誤訊息,建議您需要一個一個地解決這些錯誤。
fatal: could not create work tree dir ‘project’: Permission denied
如果出現這個訊息,可能是在使用 git 指令存取儲存庫時,該用戶沒有建立資料夾的權限等。建議您確認 git 伺服器端的權限設定,檢查正在嘗試存取的用戶是否有被授予適當的權限。
ssh: Could not resolve hostname XXXX: Name or service not known
這應該是名稱解析失敗。建議您可以用 nslookup 等工具確認主機名稱能否正確解析。如果是在本地存取,也可以考慮直接在 hosts 檔案中設定主機名稱。
$ git clone git@XXXX:lab/project.git
Cloning into ‘project’…
git@XXXX’s password:
這是因為您是以 git 這個用戶進行存取,所以應該是需要 git 儲存庫端 git 用戶的密碼。
無論如何,建議您先整理一下 git 儲存庫與客戶端的關係,這樣在這裡詢問時也比較容易獲得建議。QNAP 上預設應該沒有安裝 git 指令,您是有用 docker 等方式來操作嗎?
1個讚
@ommo 您好
也就是說,您在 NAS 上用 Docker 架設了 git 伺服器呢。原來如此。
您提供的 URL 似乎沒有詳細說明,不過我認為 git 的容器與其使用 NAT,不如設定為 bridge,讓它擁有與外部網路相同的 IP 位址會更好。
如果設定為 NAT,應該會需要做埠轉發,因此像 http 埠、https 埠等就必須指定為非 80、443 的其他埠號,這樣 git 用戶端的設定也會變得麻煩。
在 gitlab 容器那邊建立使用者,並建立一個空的專案。
在我本地環境中,可以從 Windows 的 git 用戶端對 http://10.27.64.92/harinezumi/myfirstproject 進行 clone。
如果只是本地運作,ssh 存取並非必要。
建議可以從簡單的地方開始確認看看如何呢?
我想,只要把 Docker 容器用 bridge 方式連到外部,應該就能順利運作了。
1個讚
@Harinezumi 您好
感謝您的回覆。
按照上述方法,已成功使用 http 方式進行 clone,感謝您的協助。
您提到使用 ssh 並非必要,但我想請問,每次都需要輸入認證資訊(使用者名稱和密碼)嗎?(在 clone 時有被要求輸入。)
懇請您再次協助,感激不盡。
@ommo 先生
暫時看起來能正常運作,太好了。
是否每次都需要認證?這取決於客戶端的設定,也屬於客戶端依賴的部分。
(就像用瀏覽器訪問 NAS 設定畫面時的「記住」設定一樣。)
這部分請您自行確認看看。
1個讚