国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

GitHub - 使用SSH進(jìn)行連接

這篇具有很好參考價(jià)值的文章主要介紹了GitHub - 使用SSH進(jìn)行連接。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

有一個(gè)SSH密鑰跟了我很多年,更換電腦也不曾更換它。它不需要額外輸入密碼就能用,我將它的公鑰用在了諸多平臺(tái)。雖然很方便,但是安全性差(指沒有密碼)和匿名性差(指同一公鑰在不同平臺(tái)可能被關(guān)聯(lián))。

于是,計(jì)劃在保留已有SSH密鑰的情況下,先新創(chuàng)建一個(gè)SSH密鑰專門用于GitHub,并加上密碼增加安全性,后續(xù)再逐步為其他平臺(tái)創(chuàng)建。在實(shí)際操作過程中,遇到了一些問題并進(jìn)行研究,在此記錄一番,希望對(duì)你有所幫助。

注意,以下內(nèi)容均是以GitHub使用SSH連接為例,分別討論單個(gè)或多個(gè)SSH密鑰的使用等問題。可能存在不完善或少許錯(cuò)誤,歡迎留言評(píng)論補(bǔ)充或指正。

開發(fā)環(huán)境

  • MacOS: 14.3.1
  • SSH: OpenSSH_9.4p1

單個(gè)SSH密鑰

如果不考慮匿名性,每臺(tái)設(shè)備只維護(hù)單個(gè)SSH密鑰用于各個(gè)平臺(tái)是很輕松的,加上密碼安全性也有一定的保障。GitHub使用SSH進(jìn)行連接的步驟如下:

1.1. 生成SSH密鑰

  1. 執(zhí)行密鑰創(chuàng)建命令
# 這是使用RSA算法生成
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 現(xiàn)在一般推薦使用安全性更高的Ed25519算法生成
ssh-keygen -t ed25519 -C "your_email@example.com"

your_email@example.com一般是GitHub上賬號(hào)的電子郵件地址(來自GitHub官方文檔的說法)。不過,這有個(gè)問題,一臺(tái)設(shè)備上如果只管理一個(gè)SSH密鑰,然后不同平臺(tái)上的電子郵件地址又不一樣,那該填什么?

先不管GitHub的說法,我們可以通過使用手冊(cè)命令看看-C選項(xiàng)的含義:

man ssh-keygen

輸出很長(zhǎng),這里只展示關(guān)于-C-c選項(xiàng)的內(nèi)容(補(bǔ)充:-t選項(xiàng)是指定密鑰類型):

...
-C comment
        Provides a new comment.
        
-c      Requests changing the comment in the private and public key
        files.  The program will prompt for the file containing the
        private keys, for the passphrase if the key has one, and for the
        new comment.
...

可見-C選項(xiàng)后面跟的只是注釋,方便你標(biāo)識(shí)這個(gè)密鑰(標(biāo)識(shí)用途或所有者等)。實(shí)測(cè),直接填your_email@example.com也一切正常!而且這個(gè)注釋是可以通過-c選項(xiàng)修改的,修改命令參考如下:

ssh-keygen -c -f ~/.ssh/id_ed25519

實(shí)測(cè)能修改成功,并且不需要更新已經(jīng)添加到GitHub的公鑰,注釋信息并不會(huì)影響身份驗(yàn)證。所以,填什么請(qǐng)隨意。

  1. 設(shè)置密鑰存放路徑
# RSA算法生成
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa):
# Ed25519算法生成
Enter file in which to save the key (/Users/xxx/.ssh/id_ed25519):

建議直接按Enter鍵使用它已經(jīng)給出的默認(rèn)文件路徑,具體原因請(qǐng)看后面無密碼密鑰部分的內(nèi)容。

  1. 設(shè)置密鑰密碼
Enter passphrase (empty for no passphrase):

如果不使用密碼可以直接按Enter鍵,不過建議使用密碼。生成密鑰成功后,可以參考以下命令新增/修改/刪除密碼:

ssh-keygen -p -f ~/.ssh/id_ed25519
  1. 生成密鑰成功
Your identification has been saved in /Users/xxx/.ssh/id_rsa(或id_ed25519)
Your public key has been saved in /Users/xxx/.ssh/id_rsa.pub(或id_ed25519.pub)
The key fingerprint is: xxx your_email@example.com
The key's randomart image is: xxx

參考文檔:

  • GitHub - 生成新SSH密鑰

1.2. 添加SSH密鑰

打開SSH and GPG keys頁(yè)面,如果沒有登錄請(qǐng)先登錄。點(diǎn)擊[New SSH key]按鈕添加SSH密鑰:

githubssh,開發(fā)記錄,github,ssh

  • Title:給密鑰設(shè)置描述性標(biāo)簽,可以用于區(qū)分設(shè)備。當(dāng)某個(gè)設(shè)備的私鑰泄漏時(shí),方便快速找到該設(shè)備的SSH密鑰并刪除
  • Key type:密鑰類型,分為Authentication Key(身份驗(yàn)證)和Signing Key(提交簽名),使用默認(rèn)的身份驗(yàn)證類型即可
  • Key:前面生成的公鑰,可以通過以下命令將公鑰復(fù)制到剪貼板,也可以找到公鑰文件(.pub擴(kuò)展名)用文本程序打開復(fù)制
# 復(fù)制RSA算法生成的密鑰
pbcopy < ~/.ssh/id_rsa.pub
# 復(fù)制Ed25519算法生成的密鑰
pbcopy < ~/.ssh/id_ed25519.pub

由于添加密鑰是敏感操作,GitHub一般會(huì)讓你再次驗(yàn)證身份,參考Sudo 模式。

參考文檔:

  • GitHub - 向你的帳戶添加新的SSH密鑰

1.3. 測(cè)試SSH連接

通過執(zhí)行以下命令測(cè)試:

ssh -T git@github.com

一般會(huì)得到這樣的輸出:

The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

其中SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU是服務(wù)器的公鑰指紋,用于驗(yàn)證服務(wù)器的身份。GitHub的SSH密鑰指紋:

SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s (RSA)
SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM (ECDSA)
SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU (Ed25519)

確認(rèn)公鑰匹配后,輸入yes完成身份驗(yàn)證,會(huì)自動(dòng)在~/.ssh/known_hosts文件中保存已驗(yàn)證服務(wù)器信息,后續(xù)無需再次驗(yàn)證,除非服務(wù)器信息有變化。

如果密鑰有密碼,需要輸入密碼完成連接測(cè)試。

參考文檔:

  • GitHub - 向你的帳戶添加新的SSH密鑰

2.1. 簡(jiǎn)化密鑰密碼輸入

如果你的SSH密鑰有設(shè)置密碼,那么你會(huì)發(fā)現(xiàn)每次使用(例如執(zhí)行git pull命令)都需要輸入一遍密碼,相當(dāng)麻煩。那么有什么辦法可以解決這個(gè)問題呢?

這就不得不提到SSH代理,將密鑰添加到代理,只需要輸一次密碼,后續(xù)無需重復(fù)輸入密碼。先在~/.ssh路徑下創(chuàng)建config文件(如果該文件不存在):

touch ~/.ssh/config

然后往里面添加配置:

Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
  • AddKeysToAgent:將密鑰加入代理
  • UseKeychain:將密碼存儲(chǔ)在鑰匙串
  • IdentityFile:指定密鑰文件路徑

配置后,只需要輸入一次密碼,密碼會(huì)自動(dòng)保存到鑰匙串,打開鑰匙串應(yīng)用搜索SSH關(guān)鍵詞可以找到存儲(chǔ)記錄。通過以下命令可以查看已經(jīng)添加到SSH代理中的密鑰:

ssh-add -l

當(dāng)重啟電腦后(也可以通過killall ssh-agent命令終止代理,在需要時(shí)會(huì)自動(dòng)重啟)馬上查看SSH代理中的密鑰,你會(huì)發(fā)現(xiàn)沒有加載任何密鑰:

The agent has no identities.

這時(shí)使用SSH連接(例如執(zhí)行git pull命令),會(huì)自動(dòng)添加密鑰,也無需再輸入密碼。

關(guān)于配置中的Host,這里引出另一個(gè)問題,現(xiàn)在只維護(hù)單個(gè)密鑰用于多個(gè)平臺(tái),按前面的配置,只有連接GitHub時(shí)能簡(jiǎn)化密碼輸入,其他平臺(tái)還是每次都需要輸入密碼。

這很好解決,在config文件中參考前面的配置修改Host給其他平臺(tái)也增加配置即可。需要注意一點(diǎn),有些平臺(tái)的Host可能類似這樣的git.github.com,這時(shí)你要么完全按照這個(gè)配置,要么使用通配符*.github.com。

如果平臺(tái)多了,配置也挺麻煩的,本來只維護(hù)單個(gè)密鑰就為了省事,那還有沒有更省事的方法呢?肯定是有的,參考如下配置:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

參考文檔:

  • GitHub - 將SSH密鑰添加到ssh-agent

多個(gè)SSH密鑰

1.1. 生成/添加/測(cè)試SSH密鑰

參考前面單個(gè)SSH密鑰的生成/添加/測(cè)試,除了設(shè)置密鑰存放路徑時(shí)需要重新命名區(qū)分已有的密鑰文件外,操作基本一樣。

我一般按照這個(gè)格式id_aaa.bbb命名,aaa是密鑰類型(例如ed25519),bbb是平臺(tái)標(biāo)識(shí)(例如github)。按自己喜好命名,方便自己標(biāo)識(shí)就行。

2.1. 簡(jiǎn)化密鑰密碼輸入

參考前面單個(gè)SSH密鑰的簡(jiǎn)化密碼輸入,可以針對(duì)不同平臺(tái)配置不同的密鑰文件:

Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519.github
  
Host xxx.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa.xxx

或者更簡(jiǎn)單點(diǎn)(不過都維護(hù)多個(gè)密鑰了,應(yīng)該很少這么做了吧):

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
  
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

如果按照上方示例中的配置,會(huì)根據(jù)先后順序匹配。例如id_ed25519密鑰會(huì)被優(yōu)先匹配,只有當(dāng)匹配失敗或密碼錯(cuò)誤,才會(huì)繼續(xù)往下匹配。

無密碼密鑰

前面著重講設(shè)有密碼的密鑰,那如果密鑰不設(shè)置密碼還需要配置嗎?

這里先引出一個(gè)默認(rèn)密鑰文件的說法,默認(rèn)密鑰文件指使用默認(rèn)名稱命名并放在默認(rèn)路徑下的密鑰。默認(rèn)路徑默認(rèn)名稱分別指:

  • 默認(rèn)路徑~/.ssh
  • 默認(rèn)名稱id_dsa | id_ecdsa | id_ecdsa_sk | id_ed25519 | id_ed25519_sk | id_rsa

進(jìn)而引出:

  • 對(duì)于單個(gè)無密碼密鑰,只要屬于默認(rèn)密鑰文件,SSH會(huì)自動(dòng)添加,無需再額外配置
  • 對(duì)于多個(gè)無密碼密鑰,不屬于默認(rèn)密鑰文件的需要在config文件中配置,參考配置如下:
Host github.com
  IdentityFile ~/.ssh/id_ed25519.github

或許你會(huì)疑問,默認(rèn)密鑰文件的說法是怎么來的?

在已有密鑰的情況下創(chuàng)建新密鑰時(shí),我發(fā)現(xiàn)自定義命名的密鑰無法直接使用,同時(shí)將密鑰名稱改為默認(rèn)名稱后又可以了,所以合理猜測(cè)存在一些默認(rèn)密鑰文件會(huì)被SSH自動(dòng)添加(無論密鑰是否有密碼,有密碼的密鑰不配置也能正常使用,只是需要輸入密碼)。

關(guān)于猜測(cè)的具體驗(yàn)證過程請(qǐng)看續(xù)篇:GitHub - 使用SSH進(jìn)行連接(續(xù))。

補(bǔ)充內(nèi)容

除了通過配置config文件簡(jiǎn)化密碼輸入,還可以通過以下方法。

~/.bash_profile~/.zshrc文件末尾加上:

if ! ssh-add -l | grep -q "your_email@example.com"; then
    ssh-add --apple-use-keychain ~/.ssh/id_ed25519.github
fi

其中your_email@example.com是創(chuàng)建密鑰時(shí)的注釋(參考前面的密鑰創(chuàng)建),~/.ssh/id_ed25519.github是密鑰文件路徑,請(qǐng)根據(jù)實(shí)際情況替換。

追加內(nèi)容保存后,重新打開終端或用source命令使其生效。根據(jù)提示,首次輸入密碼后,后續(xù)無需再輸入密碼。

這個(gè)原理很簡(jiǎn)單,每當(dāng)打開終端時(shí),首先通過ssh-add -l命令獲取已經(jīng)添加到SSH代理中的密鑰信息,然后根據(jù)密鑰信息搜索是否包含特定注釋信息,以此判斷密鑰是否已經(jīng)被添加到SSH代理中,最后如果沒添加則通過ssh-add --apple-use-keychain命令添加。

--apple-use-keychain的作用是將首次輸入的密碼存儲(chǔ)到鑰匙串中。補(bǔ)充一點(diǎn),以前是用-K,現(xiàn)在已經(jīng)被棄用。

注意,這個(gè)方法有個(gè)缺點(diǎn),如果重啟電腦后你沒先打開終端觸發(fā)自動(dòng)加載密鑰,那就不會(huì)加載。

例如重啟電腦后,直接用Sourcetree軟件執(zhí)行Git相關(guān)操作,會(huì)報(bào)錯(cuò)。不過,Android Studio是例外,猜測(cè)可能是因?yàn)樗鼏?dòng)時(shí)也啟動(dòng)了shell進(jìn)程,觸發(fā)了密鑰加載。

簡(jiǎn)單驗(yàn)證一下猜測(cè):刪除鑰匙串中保存的密鑰密碼,并且通過killall ssh-agent命令終止代理(清除已添加的密鑰),重新啟動(dòng)Android Studio,隨意打開一個(gè)項(xiàng)目,結(jié)果卡住了一會(huì)兒,還彈了警告:

githubssh,開發(fā)記錄,github,ssh

Learn more按鈕指向Shell Environment Loading文章。

同時(shí)內(nèi)置終端卡在密鑰密碼輸入。結(jié)合Learn more按鈕指向的文章可知,Android Studio果然啟動(dòng)了shell進(jìn)程,當(dāng)遇到首次加載密鑰需要輸入密碼時(shí),會(huì)因?yàn)榈却艽a輸入而卡住,直到等待超時(shí)。

最后

如果這篇文章對(duì)你有所幫助,點(diǎn)贊??收藏??支持一下吧,謝謝~


本篇文章由@crasowas發(fā)布于CSDN。文章來源地址http://www.zghlxwxcb.cn/news/detail-855885.html

到了這里,關(guān)于GitHub - 使用SSH進(jìn)行連接的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 記錄 使用 git 克隆倉(cāng)庫(kù)報(bào)錯(cuò):Warning: Permanently added‘github.com’ to the .....(ssh )
  • vscode通過ssh連接github倉(cāng)庫(kù)(git+ssh+github+vscode詳細(xì)步驟)

    vscode通過ssh連接github倉(cāng)庫(kù)(git+ssh+github+vscode詳細(xì)步驟)

    首先我們先來了解一下什么是 ssh 和 github SSH(Secure Shell)是一種網(wǎng)絡(luò)協(xié)議,用于在不安全的網(wǎng)絡(luò)中安全地傳輸數(shù)據(jù)和執(zhí)行遠(yuǎn)程命令。它提供了加密的通信通道,使得數(shù)據(jù)傳輸過程中不容易被竊聽或篡改。 SSH 使用公鑰加密和私鑰解密的方式進(jìn)行身份驗(yàn)證和數(shù)據(jù)傳輸。用戶生成

    2024年01月25日
    瀏覽(30)
  • 在 GitHub 上設(shè)置 SSH 公鑰連接

    在 GitHub 上設(shè)置 SSH 公鑰連接

    最終效果圖 在終端中執(zhí)行以下命令,生成 SSH 密鑰對(duì): 在這里,替換 your_email@example.com 為您的 GitHub 關(guān)聯(lián)郵箱。 運(yùn)行以下命令將 SSH 密鑰添加到 SSH 代理: 執(zhí)行以下命令,將 SSH 公鑰的內(nèi)容復(fù)制到剪貼板: 1、登錄到 GitHub 帳戶。 2、轉(zhuǎn)到您的 GitHub 主頁(yè)。 3、點(diǎn)擊右上角的用戶

    2024年02月03日
    瀏覽(20)
  • 如何在Ubuntu上進(jìn)行GitHub ssh連接

    要在 Ubuntu 上使用 SSH 連接到 GitHub,您需要進(jìn)行以下步驟: 生成 SSH 密鑰對(duì) :首先在您的本地機(jī)器上生成一個(gè) SSH 密鑰對(duì)。打開終端并運(yùn)行以下命令: 上述命令將為您生成一個(gè)新的 ed25519 SSH 密鑰對(duì)。當(dāng)提示您輸入要保存密鑰的位置時(shí),按 Enter 接受默認(rèn)位置。然后,您將被提

    2024年02月10日
    瀏覽(20)
  • mac本地創(chuàng)建ssh key連接github

    mac本地創(chuàng)建ssh key連接github

    今天克隆自己github上面的筆記到新電腦上,用http連接進(jìn)行克隆,然后要我輸入賬號(hào)密碼,輸入完報(bào)了個(gè)提示“remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.”,說是密碼驗(yàn)證于2021年8月13日不再支持,那么就只能用ssh key的方式來連

    2024年02月13日
    瀏覽(21)
  • 解決git在使用代理時(shí)進(jìn)行HTTPS操作時(shí)的無法連接github的解決辦法

    解決git在使用代理時(shí)進(jìn)行HTTPS操作時(shí)的無法連接github的解決辦法

    問題如下: 在使用git clone 無法連接github的443端口。 解決問題: 首先查看自己的代理服務(wù)器使用的端口號(hào)(我這里的端口號(hào)是7890。) 使用指令 這條命令是在配置 Git 使用代理服務(wù)器進(jìn)行 HTTPS 連接。具體來說,它設(shè)置了 Git 在進(jìn)行 HTTPS 操作時(shí)(如 clone, fetch, pull 或 push 到使用

    2024年01月25日
    瀏覽(20)
  • github與idea連接及ssh秘鑰生成

    github與idea連接及ssh秘鑰生成

    (1)安裝完git后,在開始菜單里面可以,看到如下,選擇git cmd (2)按如下步驟生成秘鑰,在打開的cmd中輸入 ssh-keygen -t rsa -C \\\"your_email@example.com\\\" ,把郵箱換成你自己github注冊(cè)用的郵箱,按回車,就會(huì)看到下面的步驟 輸入密碼后,顯示如下圖,就是成功了,這里的密碼要牢記

    2024年02月12日
    瀏覽(34)
  • 搭建github-ssh連接時(shí),Could not resolve hostname github的解決方案(無法ping通github)

    測(cè)試平臺(tái):Windows 10 測(cè)試時(shí)間: 2022年3月4日 問題描述: ? 筆者在進(jìn)行搭建本地 git 時(shí),需要通過 ssh 建立與 github 的連接,在進(jìn)行ssh連接驗(yàn)證時(shí),出現(xiàn)如下提示 ? 此時(shí)對(duì)目標(biāo)地址進(jìn)行 ping 操作如下 出現(xiàn)如下錯(cuò)誤提示(git bash) windows的cmd 我沒復(fù)制,但大致提示無法訪問遠(yuǎn)程主機(jī)

    2023年04月08日
    瀏覽(18)
  • 14.(開發(fā)工具篇github)如何在Github配置ssh key

    14.(開發(fā)工具篇github)如何在Github配置ssh key

    上圖表示已存在。跳第三步 拷貝第三步內(nèi)容,保存

    2024年02月07日
    瀏覽(20)
  • git通過ssh代理連接github(gitee不支持),并更改端口

    git通過ssh代理連接github(gitee不支持),并更改端口

    需求 git clone github/gitee遠(yuǎn)程倉(cāng)庫(kù),使用ssh協(xié)議,并且走本地的http代理(端口3128)。 運(yùn)行環(huán)境是Ubuntu 20.04。 github使用ssh代理的方案 修改 ~/.ssh/config 文件: Hostname ssh.github.com 和 ProxyCommand nc -X connect -x 127.0.0.1:3128 %h %p 定義對(duì)服務(wù)器 github.com 的 ssh 調(diào)用應(yīng)該重新路由到端口 3128 上的代

    2024年02月17日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包