如果這些資訊很重要,我正在使用 M1 Macbook Pro 16"。
這是我做的事情的清單!之后!洗掉組態檔的內容。
$ ssh -v localhost
OpenSSH_8.6p1, LibreSSL 3.3.6
我使用推薦的型別創建了一個簡單的 ssh 檔案:
$ ssh-keygen -t ed25519 -C "[email protected]" -f github-personal
... password, whatever
$ ls -la
.
..
bkup
config
github-personal
github-personal.pub
known_hosts
然后我繼續將公鑰添加到我的帳戶
$ cat ~/.ssh/github-personal.pub | pbcopy
轉到我的帳戶、設定、SSH 和 GPG,添加密鑰,給它一個相關名稱。
$ ssh-add -l
The agent has no identities.
不錯,符合預期
$ ssh-add ~/.ssh/github-personal
password:...
$ ssh-add -l
256 SHA256: ... my.email@whatever
將簽名與 github 上的簽名進行比較,是的,它是相同的,一切正常。
$ ssh -T [email protected]
Hi [my-name]! You've successfully authenticated, but GitHub does not provide shell access.
$ git clone [email protected]:my-user/my-repo
cloning into ... whatever it works
好的!最低限度的作品!現在讓我們嘗試擁有 3 個 github 帳戶,每個帳戶都有自己的 SSH 密鑰。但是……這很可怕。在添加其他帳戶之前,讓我們在組態檔中使用上面的確切內容嗎?
contents of ~/.ssh/config:
AddKeysToAgent yes
IdentitiesOnly yes
Host personal-github
HostName github.com
User git # as instructed by git, only ever use the git user i.e. [email protected]
UseKeychain yes
IdentityFile ~/.ssh/github-personal
# PreferredAuthentications publickey,password
我不知道PreferredAuthentications publickey,password是不是把我弄亂了,我試過有沒有它。現在沒有了。
$ ssh-add -l
yes, agent still has it, it's listed here
$ ssh -T [email protected]
[email protected]: Permission denied (publickey).
...
$ ssh-add -D
$ ssh-add -l
key not longer here
$ ssh personal-github
PTY allocation request failed on channel 0
Hi my-name! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
$ ssh-add -l
yep, key was added automatically
所以,也許我在這里遺漏了一些東西。我了解以下內容:我在組態檔中定義 a Host name-defined-by-me. 這啟動了某種功能,或任何名稱空間,不在乎。我可以在哪里繼續定義引數,直到下一個Host name-defined-by-me-2出現。
然后我呼叫它name-defined-by-me來加載那個特定的配置。
就我而言,讓我們再次查看檔案:
AddKeysToAgent yes
IdentitiesOnly yes
Host personal-github
HostName github.com
User git # as instructed by git, only ever use the git user i.e. [email protected]
UseKeychain yes
IdentityFile ~/.ssh/github-personal
# PreferredAuthentications publickey,password
我已經在全球范圍內定義了我想要的:
- 自動向代理添加密鑰
- 但只有特別標識的鍵,而不是 ~/.ssh/ 中的所有內容
- 而且 - 我認為 - 只有當我打電話
ssh name-defined-by-me或在這里ssh personal-github
在 的特定主機部分personal-github,我說我嘗試連接的主機名是 github.com,用戶git形成[email protected].
我想使用我的 mac 鑰匙串在每次更改主機時不提供密碼。(我可能需要$ ssh-add -D在主機更改之間進行)。我正在指定我要添加的單個檔案。
當我呼叫它時它會添加檔案$ssh personal-github,它不會詢問我的密碼,并且 github 會用我的名字做出回應,所以 SOMETHING 一定是正確的。
然而,我不能繼續超過那個點。
$ ssh -T [email protected]
[email protected]: Permission denied (publickey).
$ rm -rf my-repo
$ git clone [email protected]:my-user-name/my-repo
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我不知所措。
uj5u.com熱心網友回復:
ssh -T [email protected]
[email protected]: Permission denied (publickey).
這是意料之中的。
每當您在 ~/.ssh/config 檔案中參考私鑰時,在 entry 下Host key1,您需要將 URL 更改為
ssh -Tv key1
git clone key1:me/myRepository
你可以對key2, key3, ...重復一遍
uj5u.com熱心網友回復:
SSH 組態檔位置
OpenSSH客戶端組態檔名為config,存放在用戶主目錄下的.ssh目錄下。~/.ssh 目錄是在用戶第一次運行 ssh 命令時自動創建的。如果您的系統上不存在該目錄,請使用以下命令創建它:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
默認情況下,SSH 組態檔可能不存在,因此您可能需要使用 touch 命令創建它:touch ~/.ssh/config
該檔案必須只能由用戶讀寫,其他人不能訪問:
chmod 600 ~/.ssh/config
SSH 組態檔結構和模式
SSH 組態檔采用以下結構:
主機 hostname1 SSH_OPTION 值 SSH_OPTION 值
主機 hostname2 SSH_OPTION 值
主機 * SSH_OPTION 值
SSH 客戶端組態檔的內容被組織成節(節)。每個節都以 Host 指令開頭,并包含在與遠程 SSH 服務器建立連接時使用的特定 SSH 選項。
縮進不是必需的,但建議使用,因為它使檔案更易于閱讀。
Host 指令可以包含一個模式或以空格分隔的模式串列。每個模式可以包含零個或多個非空白字符或以下模式說明符之一: * - 匹配零個或多個字符。例如,Host * 匹配所有主機,而 192.168.0.* 匹配 192.168.0.0/24 子網中的主機。? - 只匹配一個字符。模式,主機 10.10.0。?匹配 10.10.0.[0-9] 范圍內的所有主機。!- 在模式的開頭使用時,它會否定匹配。例如,主機 10.10.0.* !10.10.0.5 匹配 10.10.0.0/24 子網中除 10.10.0.5 之外的任何主機。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/511317.html
上一篇:這個點分隔命名約定是什么?
