Git中使用HTTPS和SSH協議的區別 與 如何設定


Posted by hoyi-23 on 2021-10-01

HTTPS 和 SSH 是什麼?

Git 有四種協議用來傳輸數據。

  1. 本地協議(Local)
  2. git協議
  3. HTTPS協議
  4. SSH(Secure Shell)協議

在多人合作上,我們通常會用到的就是後面那兩種。


HTTPS 和 SSH 的差別

HTTPS

雖然使用HTTPS來複製URL是比較簡單的。
想要將遠端的專案複製下來只需要在終端機輸入:
git clone HTTPS網址
但是想要抓取(fetch)或推到(push)遠端時,就需要在輸入帳號密碼,如果不需要大多是帳密(Key Chain)已存在電腦內。
所以HTTPS通常會用在想要複製別人的專案來操作,但不需要再推回去時。

SSH

使用SSH來複製URL就需要先設置 SSH key(金鑰)。
雖然需要先在電腦內設定好金鑰,但再上傳時就不需要再輸入額外帳密。
在多人合作時,就會很方便。


如何設定 Github SSH 金鑰(window)

首先的首先,打開終端機!!

產生金鑰

  1. 輸入指令:
    $ ssh-keygen -t ed25519 -C "your_email@example.com"
    如果你的電腦系統不支援Ed25519 algorithm,要輸入下面這行
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. 接下來會看到這兩行:

     Generating public/private ed25519 key pair.
     Enter file in which to save the key (....):
    

    直接按enter就好

  3. 如果你接著看到 :
    ...overwrite(y/n)
    那是因為已經有存在的SSH了,可以不需要再重新生成
  4. 接下來會看到
     Enter passphrase (empty for no passphrase): [Type a passphrase]
     Enter same passphrase again: [Type passphrase again]
    
    輸入兩次密碼(自訂),你的金鑰就會生成囉!
    第一次設定的人可能會有的疑問是,怎麼我打了卻看不到(因為我自己就有遇到哈哈,還以為是鍵盤問題),它就是讓你看不到喔xd,請自己記好然後打兩次。

設定金鑰代理 (Adding your SSH key to the ssh-agent)

什麼是金鑰代理?
啟用SSH的代理伺服器,是為了讓我們之後使用這個金鑰時,不用再額外輸入密碼

  1. 輸入$ eval "$(ssh-agent -s)"
  2. 將私鑰及加入到 SSH 代理上,並且同時儲存剛剛的自訂密碼。
    輸入$ ssh-add ~/.ssh/id_ed25519。(在這裡你會需要輸入密碼呦)
    如果你是創建不同名稱的密鑰,可以將id_ed25519替換掉。

將金鑰添加到GitHub

(這裡是使用網頁版的GitHub.com)
接下來如果你的名稱與id_ed25519不同,都要記得自己修改掉呦。
ok!現在你到電腦的/c/Users/user/地方應該就會看到 .ssh檔案,打開就會看到金鑰的名稱檔案,有的話就可以繼續下去!

  1. 輸入clip < ~/.ssh/id_ed25519.pub
  2. 到GitHub主面,按下settings,再進入到 SSH and GPG keys,點擊 New SSH keyAdd SSH key
  3. 輸入自訂 Title / 並將密鑰貼到Key
    密鑰就是在剛剛你進入到的.ssh檔案夾內,找到.pug檔案,打開複製再貼上就可以了! 記得不要用到 OpenSSH Private,用了也不會成功!

完成!

上面這樣就完成啦! 接下來你可以進行一次git push,確認是否成功囉!


#HTTPS #ssh #Git







Related Posts

Modern Web 2018 簡短心得

Modern Web 2018 簡短心得

函式原型方法:bind()、call()、apply()

函式原型方法:bind()、call()、apply()

如何在終端機下使用 conda 指令管理虛擬環境

如何在終端機下使用 conda 指令管理虛擬環境


Comments