github中的登入認證轉自http://www.wojilu.com/Forum1/Topic/2235

泳泳啊泳泳發表於2018-01-05

github 使用 ssh 方式認證登入。

 

官方文件:http://help.github.com/ssh-key-passphrases/

 

之所以不使用普通的密碼驗證登入,原因在於:密碼不夠安全。如果你使用簡單的密碼,比如“1234”,非常容易被猜到或者被暴力破解;如果你使用複雜的密碼,為了避免自己也忘記,又可能會記在某個地方,如果被人發現,就糟了。兩種方式都很不妥。所以 github 採用 ssh 金鑰方案。

 

但如果只使用 ssh 金鑰而不使用 passphrase(口令或密碼),那跟使用複雜密碼然後記下來沒啥區別。比如你將ssh金鑰記在電腦某處,如果其他人獲取了這個檔案,那就沒有安全可言。解決辦法是:再增加一個 passphrase

 

所以,整個認證過程是:

a)先生成一個 ssh key,在github和本地機器配置;

b)然後在登入的時候,再輸入 passphrase 登入(當然,我們可以通過指令碼配置,避免每次重複輸入 passphrase )。 

 

第一部分:配置ssh

 

先進入 cygwin 命令列。為了在你的電腦和github之間建立安全連線,需要SSH keys,所以你需要

 

1)先檢測是否有這個key,請點選開始選單中的 Git Bash,輸入如下命令

cd ~/.ssh

 

2)系統應該反饋“系統找不到指定檔案”,那麼,我們需要生成一個新的key,輸入如下程式碼

$ ssh-keygen -t rsa -C “your_email@youremail.com”

——其中的email請填寫你註冊時候的email

 

系統開始生成ssh公鑰和私鑰,然後會問你儲存的目錄,請直接回車即可(直接回車意味著在當前目錄下的.ssh目錄儲存)

 

3)輸入一個密碼(passphrase),請至少填寫一個4位數,這個密碼是你連線到github所用。輸入之後,會生成id_rsa(私鑰 id_rsa.pub(公鑰檔案,如下圖所示:

 

 

 

訪問github網站, “Account Settings” > Click “SSH Public Keys” > Click “Add another public key”

 

用文字編輯器開啟上圖中第二個檔案 id_rsa.pub,裡面的內容就是SSH key,請複製它,貼上入key裡面,記得不要有任何多餘的空格和換行。然後點選“Add key”提交。(Title欄可以不填寫)

 

 

現在,你可以測試通過SSH連線到github了。請開啟Git Bash,輸入如下程式碼——

ssh -T git@github.com

 

如果提示“can`t be established.”什麼東西(如下程式碼),請不要管,直接按yes

The authenticity of host `github.com (207.97.227.239)` can`t be established.

RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.

Are you sure you want to continue connecting (yes/no)?

 

然後提示輸入密碼(passphrase)。

 

如果看到 You`ve successfully authenticated, but GitHub does not provide shell access 資訊,就表示連線成功。

 

 

第二部分:避免重複輸入 passphrase

 

 

通過上面的流程,已經正確配置了 ssh ,但你每次使用的時候,總是很不爽,比如在命令列下,每次 pull  push,都要重複輸入 passphrase。你會想:我明明已經使用 ssh key 了,為什麼還要我輸入密碼?

 

分兩種情況討論——

 

一、命令列下避免重複輸入

 

在這種情況下,有一個工具可以幫你避免重複輸入 passphrase ,這個工具叫 ssh-agent ,它可以幫你安全的儲存passphrase,不用重複輸入。

 

具體使用方法是通過指令碼預設——

 

1)開啟使用者主目錄下(比如c/cygwin/home/Administrator) .bashrc 檔案,將如下指令碼內容新增進去:

 

SSH_ENV=“$HOME/.ssh/environment”

# start the ssh-agent
function start_agent {
    
echo “Initializing new SSH agent…”
    
# spawn ssh-agent
    ssh-agent | sed 
`s/^echo/#echo/` > “$SSH_ENV”
    
echo succeeded
    chmod 600 
“$SSH_ENV”
    . 
“$SSH_ENV” > /dev/null
    ssh-add
}

# test for identities
function test_identities {
    
# test whether standard identities have been added to the agent already
    ssh-add -l | grep 
“The agent has no identities” > /dev/null
    
if [ $? -eq 0 ]then
        ssh-add
        
# $SSH_AUTH_SOCK broken so we start a new proper agent
        
if [ $? -eq 2 ];then
            start_agent
        
fi
    fi
}

# check for running ssh-agent with proper $SSH_AGENT_PID
if [ -n “$SSH_AGENT_PID” ]then
    ps -ef | grep “$SSH_AGENT_PID” | grep ssh-agent > /dev/null
    
if [ $? -eq 0 ]then
        test_identities
    
fi
# if $SSH_AGENT_PID is not properly set, we might be able to load one from
# $SSH_ENV
else
    if [ -f “$SSH_ENV” ]then
        . 
“$SSH_ENV” > /dev/null
    
fi
    ps -ef | grep “$SSH_AGENT_PID” | grep -v grep | grep ssh-agent > /dev/null
    
if [ $? -eq 0 ]then
        test_identities
    
else
        start_agent
    
fi
fi

 

 

2)然後開啟 cygwin 的命令列,第一次開啟,它會要求你輸入 passphrase ,輸入之後,再執行相應的遠端操作,就不會要求重複輸入 passphrase 了(當然重啟電腦會要求再次輸入)。

 

 

二、git extentions 中避免重複輸入

 

【啟用 PuTTY

 

1)開啟 PuTTY,方法:“遠端”->PuTTY->“生成或者匯入key

 

2)匯入你前面的 ssh key,點選下面的“Load”按鈕,匯入前面生成的 id_rsa 檔案

 

 

3)這時它要求你輸入 passphrase

 

 

4)輸入成功,然後你需要點選下圖的 Save private key,將私鑰儲存,你可以將它儲存在 id_rsa(ssh私鑰同一個目錄。PuTTY 生成的私鑰檔案是 .ppk 字尾名。

 

 

【在 git extensions 中使用 PuTTY

 

1)開啟 git etensions,在 “遠端”選單中,點選“管理遠端檔案庫”

 

2)點選右下部分的“私鑰檔案”後面的“瀏覽”,將前面 PuTTY 中儲存的 .ppk 字尾的私鑰檔案載入進來。

 

然後點選“載入SSH金鑰”,輸入 passphrase,然後點選“測試連線”

此時 PuTTY/plink.exe 開始啟動,只要這個開著,就不用重複輸入 passphrase

 

 

3)現在可以順利和遠端庫操作,比如下面的“拉取”

 

或者在 vs 中直接操作——


==============================================================================
本文轉自被遺忘的部落格園部落格,原文連結:http://www.cnblogs.com/rollenholt/articles/2389459.html,如需轉載請自行聯絡原作者


相關文章