标签: ssh-agent

如何清除 ssh-agent 条目(在 Mac OS X 上)?

我正在运行 Mac OS X,似乎在通过 SSH 连接到多台机器后,使用身份文件,我的“ssh-agent”建立了很多身份/密钥,然后有时向远程机器提供太多,导致他们在连接之前踢我:

从 10.12.10.16 收到断开连接:2:cwd 的身份验证失败太多

很明显发生了什么,这个页面更详细地讨论了它:

SSH 服务器只允许您尝试进行一定次数的身份验证。每个失败的密码尝试、每个失败的公钥/身份提供等,都会占用这些尝试之一。如果您的代理中有很多 SSH 密钥,您可能会发现 SSH 服务器可能会在允许您尝试密码身份验证之前将您踢出去。如果是这种情况,有几种不同的解决方法。

重新启动会清除代理,然后一切正常。我还可以将此行添加到我的.ssh/config文件中以强制它使用密码身份验证:

PreferredAuthentications keyboard-interactive,password
Run Code Online (Sandbox Code Playgroud)

无论如何,我在我引用的页面上看到了关于从代理中删除密钥的说明,但我不确定这是否适用于 Mac,因为它们似乎在重新启动后被清除。

是否有一种简单的方法可以清除“ssh-agent”中的所有密钥(与重新启动时发生的情况相同)?

linux ssh unix ssh-agent macos

76
推荐指数
2
解决办法
12万
查看次数

在多个登录会话之间共享同一个 `ssh-agent`

有没有一种方便的方法来确保来自给定用户(即我)的所有登录都使用相同的 ssh-agent?我在大部分时间编写了一个脚本来完成这项工作,但我一直怀疑有某种方法可以做到这一点,而我刚刚错过了。此外,从那时起,计算技术取得了惊人的进步,例如这个网站。

所以这里的目标是

  • 每当我登录到盒子时,无论是通过 SSH,还是在从 gdm/kdm/etc 启动的图形会话中,或者在控制台上:
    • 如果我的用户名当前没有ssh-agent运行,则启动一个,导出并ssh-add调用环境变量。
    • 否则,现有代理的坐标将在登录会话的环境变量中导出。

当有问题的盒子用作ssh进入第三个盒子时的中继点时,此功能特别有价值。在这种情况下,它避免了每次 ssh 时都必须输入私钥的密码,然后再想,例如,git push做某事。

下面给出的脚本在很大程度上可靠地完成了这项工作,尽管它最近在 X 崩溃时出现了问题,然后我开始了另一个图形会话。在这种情况下,可能还有其他的扭曲。

这是我的坏就是好脚本。我从我的.bashrc.

# ssh-agent-procure.bash
# v0.6.4
# ensures that all shells sourcing this file in profile/rc scripts use the same ssh-agent.
# copyright me, now; licensed under the DWTFYWT license.

mkdir -p "$HOME/etc/ssh";

function ssh-procure-launch-agent {
    eval `ssh-agent -s -a ~/etc/ssh/ssh-agent-socket`;
    ssh-add;
}

if [ ! $SSH_AGENT_PID ]; then
  if [ -e ~/etc/ssh/ssh-agent-socket ] ; …
Run Code Online (Sandbox Code Playgroud)

ssh session login ssh-agent

74
推荐指数
6
解决办法
5万
查看次数

如何让ssh-agent按需自动添加密钥?

我想运行 ssh-agent(具有最大生命周期选项),但不在启动时添加任何密钥,而是按需添加它们。

就像我第一次登录某个服务器时,它应该要求输入密码,下次(除非我等了一个多小时)它应该连接干净:

ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...

ssh server2
server2> # no passphrase this time

# wait for lifetime

ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':
Run Code Online (Sandbox Code Playgroud)

我不想手动记住每次运行“ssh-add”。(例如,只为 ssh 输入密码和“哦,它没有记住,需要重新输入”)。

如果用户提供了密码,如何配置 ssh 以自动将密钥添加到 ssh-agent?

ssh ssh-agent

66
推荐指数
3
解决办法
4万
查看次数

重新连接到现有屏幕时,如何让屏幕自动连接到当前的 ssh-agent?

如果您在 ssh-agent 运行时启动屏幕会话(从 ssh -A 代理转发),则访问 ssh-agent 工作正常。但是,如果您与该会话分离、注销、再次登录(使用 ssh-agent 转发),然后重新连接到您的屏幕会话,则 ssh-agent 访问将不起作用。

如何解决这个问题?

ssh gnu-screen ssh-agent

54
推荐指数
2
解决办法
2万
查看次数

如何通过 ssh-agent 转发 gpg 密钥?

我可以使用 ssh 配置文件启用转发添加到 ssh-agent 的 ssh 密钥。我怎样才能对 gpg 密钥做同样的事情?

ssh ssh-agent gnupg

37
推荐指数
3
解决办法
1万
查看次数

保存由 ssh-add 添加的身份,以便它们持续存在

我最近进行了设置,openssh所以我可以将它与git.

在设置它的过程中(根据这篇文章),我运行了以下命令:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>
Run Code Online (Sandbox Code Playgroud)

一段时间后,在我注销并重新登录后,我尝试使用时git push出现错误。此错误的解决方案是再次运行相同的命令。

请告诉我我该怎么做

  • 保持ssh-agent运行,这样我就不必开始新的了
  • 记住我添加的键,这样我就不必每次都添加它们

澄清一下,我使用 zsh,因此某些 bash 功能在我的 .zshrc 中不起作用。

linux ssh openssh ssh-agent

27
推荐指数
2
解决办法
2万
查看次数

ssh:加载密钥“./id_rsa”时出错:格式无效

出于某种原因,我的一个 ssh 密钥“刚刚坏了”——它刚刚停止工作:

$ ssh-add ./id_rsa
Error loading key "./id_rsa": invalid format
Run Code Online (Sandbox Code Playgroud)

将密钥复制到干净的 VM 中,密钥确实有效。即使使用完全相同的 ssh 版本(Fedora 28 上的 OpenSSH_7.8p1、OpenSSL 1.1.0i-fips 2018 年 8 月 14 日)。所以它必须与我假设的系统上的一些配置有关。

# cat ./id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,...

...
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

同样奇特的是:GNOME 以某种方式设法在使用 seahorse 登录时添加密钥。然后ssh-add -L确实列出了密钥但它不可用:

sign_and_send_pubkey: signing failed: agent refused operation
Run Code Online (Sandbox Code Playgroud)

linux ssh ssh-agent

26
推荐指数
4
解决办法
13万
查看次数

如何在 Mac OS X Lion 上使用 SSH 私钥登录而不每次都输入密码?

我每天都使用 Mac OS X Lion 并通过 SSH 登录远程主机。尽管我使用 SSH 密钥对进行远程身份验证并且我不需要机动化每个主机的登录短语,但终端要求输入密码来访问我的 SSH 私钥仍然很烦人。

出于安全原因,我认为必须需要一个用于访问 SSH 私钥的密码。有没有办法让终端在启动时只询问一次短语,然后记住它,并在以后的 SSH 会话中自动使用我的私钥?

有一个名为的脚本keychain在 Gentoo Linux 上运行良好。但我从来没有在 Mac OS X Lion 上弄明白。更重要的是,有很多令人生畏的术语,例如ssh-agentssh-add。在阅读了有关这些 SSH 工具包的各种材料并做了一些令人沮丧的实验后,我更加困惑了。

因此,我来​​到了StackExchange,就以下问题寻求一些建议。

  1. 什么是ssh-agentssh-addkeychainKeychain Access.app以及他们如何互相交流?
  2. 如何在登录时输入 SSH 私钥的密码,并在以后创建 SSH 会话时自由使用它?
  3. 呃……怎么了Keychain Access.app?它不像以前那样存储 SSH 短语。

我在这里列出我所做的。希望有关于我错过的步骤的线索。

步骤 1. 在我的 Mac 上创建一个 SSH 密钥对。

$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
Run Code Online (Sandbox Code Playgroud)

步骤 …

ssh keychain ssh-agent macos

23
推荐指数
2
解决办法
4万
查看次数

ssh-agent 转发需要额外配置吗?

本指南很好地解释了 ssh-agent 如何跨多个系统工作。我想按照最后一组图表中的方式设置转发,但我无法跟踪执行此操作所需的步骤。

对于我网络上的某些机器,我可以从 A 到 B,然后从 B 到 C,而无需输入证书密码。然而,其他机器给出“无法打开与您的身份验证代理的连接”(有时!),然后不会转发我的身份验证信息。从其中一台机器通过 SSH 连接到网络上的另一台机器再次提示我输入我的私钥密码。

这些机器不是我制造的,但我可以管理其中的一些。我不确定 boxen 有效和无效的 boxen 之间有什么区别——可能是防火墙问题、ssh/ssh-agent/sshd 配置等等,我看不到任何步骤——特定于转发漂浮在“网上”的分步指南。我只需要知道从哪里开始追查这个问题。

ssh forwarding ssh-agent

22
推荐指数
2
解决办法
5万
查看次数

ssh-agent / ssh-add 错误:无法打开与您的身份验证代理的连接

我输入ssh-agent并返回以下内容:

SSH_AUTH_SOCK=/tmp/ssh-GqdeT074HLRJ/agent.4670; export SSH_AUTH_SOCK;
SSH_AGENT_ID=4671; export SSH_AGENT_PID;
echo Agent pid 4671;
Run Code Online (Sandbox Code Playgroud)

然后我输入ssh-add privkey.pem并得到以下内容:

Could not open a connection to your authentication agent
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法?我也尝试sudo在每个命令之前添加,但输出几乎相同。

ssh ssh-agent

21
推荐指数
1
解决办法
3万
查看次数

标签 统计

ssh ×10

ssh-agent ×10

linux ×3

macos ×2

forwarding ×1

gnu-screen ×1

gnupg ×1

keychain ×1

login ×1

openssh ×1

session ×1

unix ×1