今天在下載某個專案使用 go get 裡面有用到私人儲存庫,系統竟然出現了 “fatal: could not read Username for ‘https://github.com’: terminal prompts disabled”
問題原因
其實會出現這個錯誤訊息的原因是它想要使用 HTTPS 的協定來下載儲存庫,不過因為 “GIT_TERMINAL_PROMPT” 預設是 false 因此不會跳出使窗請使用者輸入帳號密碼,預設會是 false 的原因是因為直接在 SHELL 輸入帳密可能會造成使用者帳密洩漏,因此這邊不太建議把 GIT_TERMINAL_PROMPT” 改成 true 的解決方法。
PS: 這邊因為私人儲存庫的位置不能公開所以使用 “https://github.com” 作為例子
那遇到這個問題應該怎麼解決呢?
在解決之前我們可以先檢查一下 SSH 與 Git 伺服器連線是否正常
$ ssh -A [email protected] PTY allocation request failed on channel 0 Hi clarencetw! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed.
如果正常我們可以使用以下指令
git config --global url."[email protected]:".insteadOf "https://github.com/"
就可以解決問題了
此指令是跟系統說明所有 HTTPS 協定的 “https://github.com/” 都改成使用 SSH 協定的 “[email protected]:”
下完指令我們可以看到它會在 “.gitconfig” 新增一個設定
$ cat ~/.gitconfig [url "[email protected]:"] insteadOf = https://github.com/
參考資料
- https://golang.org/doc/faq#git_https
- https://git-scm.com/docs/git-config#Documentation/git-config.txt-urlltbasegtinsteadOf
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!