我一直将我的 ssh 身份文件放在我的~/.ssh/文件夹中。我那里可能有大约 30 个文件。
当我连接到服务器时,我将指定要使用的身份文件,例如
ssh -i ~/.ssh/client1-identity client1@10.1.1.10
但是,如果我不指定身份文件,而只需使用以下内容:
ssh user123@example.com
我收到错误
user123 的身份验证失败太多
我的理解是因为如果没有指定身份文件,并且ssh可以找到身份文件,那么它会尝试所有这些。
我也明白我可以编辑~/.ssh/config文件并指定如下内容:
主机example.com PreferredAuthentications 键盘交互,密码
以防止该连接尝试已知身份文件。
所以,我想我可以将我的身份文件移到目录之外~/.ssh/,或者我可以在配置文件中指定我想要禁用身份文件身份验证的每个主机,但是有什么方法可以告诉 SSH 默认不搜索身份文件?或者指定它将搜索的那些?
沿着如何告诉 git 使用哪个私钥? 我想在特定情况下使用特定的 ssh 密钥。
我的问题是,即使我指定了“-i something”,ssh 也会按照添加顺序使用来自我的 ssh-agent 的密钥。
我的具体情况:
Host USER1.git
Hostname github.com
User git
IdentityFile ~/.ssh/USER1.id_rsa
Run Code Online (Sandbox Code Playgroud)
ssh -vt USER1.gitUSER2.id_rsa如果这是首先添加到 ssh-agent 的密钥,则仍将使用。
KeePassXC 的选项中有一个SSH 代理选项卡。如何使用它来管理多台 Windows 和 Linux 计算机上的 SSH 密钥?
我正在阅读问题Tell git which private key to use,答案不适用于用户没有任何主目录的情况。
我们现在正在设置 Jenkins 服务器,运行 Jenkins 的用户没有任何主文件夹。但该特定用户必须访问 GIT 存储库。
运行 GIT 的用户如何使用密钥认证?
我的~/.ssh/config. 这是顶部的内容:
Host *
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 24h
BatchMode yes
Ciphers blowfish-cbc
Compression yes
VisualHostKey yes
Run Code Online (Sandbox Code Playgroud)
我想让它等ControlMaster不适用于 github;他们显然主动断开了这些持久连接,我理解并尊重它们。
所以要明确:
$ rm /tmp/ssh_mux_*
$ ssh git@github.com
PTY allocation request failed
Hi frioux! You've successfully authenticated, but GitHub does not provide shell access.
Shared connection to github.com closed.
$ ls /tmp/ssh_mux_*
/tmp/ssh_mux_github.com_22_git
Run Code Online (Sandbox Code Playgroud)
所以我阅读了一些文档,我在 IRC 中询问,这就是我最终得到的结果:
Host !github.com
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 24h
Host *
BatchMode yes
Ciphers blowfish-cbc
Compression yes
VisualHostKey yes
Run Code Online (Sandbox Code Playgroud)
所以现在github正确地不使用ControlMaster:
$ rm …Run Code Online (Sandbox Code Playgroud)