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


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 中直接操作——


免責聲明!

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



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