使用ssh連接gitHub


github每次pull/push代碼時要求推送代碼的用戶是合法的,所以每次推送時候都要輸入賬號密碼用以驗證用戶是否為合法用戶,而ssh是一種安全的傳輸模式,可以代替用戶的這一“輸入賬號密碼”的行為來驗證用戶。

github的倆種操作方式

  1. https

    可以隨意克隆github上的項目,而不管是誰的;在pull/push的時候是需要驗證用戶名和密碼的

  2. ssh

    克隆者必須是擁者或管理員,且需要先添加 SSH key ,否則無法克隆。在pull/push的時候不再是驗證用戶名和密碼,而是通過驗證ssh的方式來驗證用戶。

ssh(安全外殼協議)##

定義:

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平台。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平台。幾乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可運行SSH。 --百度百科

功能:

傳統的網絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的, 就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的服務器接收你傳給服務器的數據,然后再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”一轉手做了手腳之后,就會出現很嚴重的問題。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、PoP、甚至為PPP提供一個安全的"通道"。 --百度百科

使用步驟

  1. 查看是否已經存在ssh秘鑰

    打開git bash,輸入

     $ cd ~/.ssh
     $ ls
    

如果,提示不存在此目錄,則進行第二步操作,否則,你本機已經存在ssh公鑰和私鑰,可以略過第二步,直接進入第三步操作。

  1. 生成ssh秘鑰

     $ ssh-keygen -t rsa -C "your_email@example.com"
    

    代碼參數含義:

    • -t 指定密鑰類型,默認是 rsa ,可以省略。
    • -C 設置注釋文字,比如郵箱。
    • -f 指定密鑰文件存儲文件名。

    根據提示,需要指定文件位置和密碼,如果是你足夠放心,其實都可以直接回車,不需要什么密碼。執行完以后,可在/c/Users/you/.ssh/路徑下看到剛生成的文件:id_rsa和id_rsa.pub。即公鑰和私鑰。

  2. 在GitHub賬戶中添加公鑰

    • 登錄你的github,頭像處下拉框選擇settings。
    • 進入設置頁后點擊側邊欄的SSH and GPG keys按鈕。
    • 點擊New SSH key,title可以任意填,並且將上一步驟生成的id_rsa.pub的內容復制到這里的key輸入框中。
  3. 確認

     $ ssh -T git@github.com
    

    在這里我收到一個提示:

    Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.

    直接回車,最后看到這個就說明大功告成:

    Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.

遇到的問題

添加完公鑰后,使用小烏龜(TortoiseGit)pull代碼時報錯:

no supported authentication methods aviaible(server sent:publickey)

查了一下,發現是因為TortoiseGit和Git的沖突 我們需要把TortoiseGit設置改正如下。

  • 右鍵TortoiseGit -> Settings -> Network
  • 將SSH client指向~\Git\usr\bin\ssh.exe(Git安裝路徑下)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM