标签: ssh-agent

如何让 ssh-agent 通过 ssh 和 tmux(在 OS X 上)工作?

我为我的 github 帐户设置了一个私钥,我相信它的密码存储在 OS X 的钥匙串中。当我打开终端窗口并输入ssh git@github.com.

但是,当我在 ssh 会话上或本地在 tmux 会话中运行 bash 时,每次尝试 ssh 到 github 时,我都必须输入密码。

这个问题表明 screen 存在类似的问题,但我不太了解这个问题,无法在 tmux 中修复它。还有这个页面,其中包含一个相当复杂的解决方案,但用于 zsh。

编辑

为了回应@Mikel 的回答,我从本地终端得到以下输出:

[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~] 
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"
Run Code Online (Sandbox Code Playgroud)

而通过 ssh 或 tmux 我得到:

[~]
$ echo $SSH_AUTH_SOCK

[~]
$ ssh-add -l
Could not open a connection to your authentication agent. …
Run Code Online (Sandbox Code Playgroud)

ssh ssh-agent tmux macos

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

在使用 AgentForwarding 时在 ssh_config 中使用 IdentityFile 指令

是否可以使用 .ssh/config 中的 IdentityFile 指令指定转发的密钥?

我在我们的生产服务器上尝试通过 Capistrano/GIT 部署一些代码时遇到了这个怪癖。我的个人和我的工作 GIT 密钥总是加载在我的 SSH 代理中,而且碰巧我的个人密钥首先添加到代理中。我在使用 Capistrano 部署时使用代理转发,因此当主机尝试对 `git pull` 操作进行身份验证时,它失败并出现以下错误:

错误:对“您的用户”的“某些回购”的权限被拒绝。

因为它在尝试适当的密钥(稍后在 ssh 代理中提供)之前尝试使用我的个人 git 密钥进行身份验证,并假设我正在访问一个我无权访问的外部存储库。我可以让我的个人用户访问每个工作仓库,但在我的本地机器上,我可以通过在 .ssh/config 中定义自定义域来解决这个问题,如下所示:

主机个人.github.com主机
github.com
用户git
IdentityFile ~/.ssh/some_key

主机work.github.com
主机名github.com
用户git
IdentityFile ~/.ssh/some_other_key

这样 git 永远不会混淆。是否可以为我的生产设备上的转发密钥创建 .ssh/config 规则,以便他们在拉入新代码时始终知道使用哪个密钥?基本上我希望能够做到:

主机work.github.com
主机名github.com
用户git
IdentityFile some_forwarded_key

谢谢!

ssh git deployment ssh-agent

18
推荐指数
1
解决办法
6633
查看次数

无法从 ssh-agent 中删除密钥。即使重新启动也无济于事

不久前,我注意到我的 ssh-agent 中有三个我无法删除的键。 ssh-add -l显示三个键;我跑了ssh-add -D,然后被告知“所有身份都已删除。”;但随后立即ssh-add -l显示了相同的三个键。

如果我注销然后重新登录,密钥仍然存在。如果我重新启动机器,密钥仍然存在。如果我删除 中的密钥环目录/tmp,我将无法再连接ssh-agent,但是在注销并重新登录后,密钥又回来了。他们是无懈可击的。

据我所知,钥匙是我的,不是别人的。我可以通过他们访问我通常的本地服务。但是,当我再次添加其中一个密钥时ssh-add,给出私钥文件的路径,新密钥在以下输出中具有不同的外观ssh-add -l

2048 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f /home/jruser/.ssh/jruser-keyname-20110418 (RSA)
Run Code Online (Sandbox Code Playgroud)

对比原版:

2048 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f jruser 04/18/2011 keyname (RSA)
Run Code Online (Sandbox Code Playgroud)

有没有办法合理地解释这种行为?我想真的有两个问题:

  1. 即使在重新启动后,如何设法保留密钥?我的基本知识ssh表明密钥总是必须手动添加。

  2. 为什么ssh-agent -D要在删除身份时对我撒谎?

ssh ssh-agent

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

如果有的话,SSH 密钥与用于其他目的的非对称密钥有何不同?

如果有的话,SSH 密钥与用于其他目的(例如电子邮件签名)的非对称密钥有何不同?

我被提示问这个,部分是因为在 OS X 上,有可用于管理 SSH 密钥的应用程序(ssh-agent、SSHKeychain 等)以及旨在管理 GPG 密钥的应用程序(GPG Keychain Access 等),显然,两人从未见面。但是,我不认为这是 OS X 特定的问题。

这种关注点分离是因为密钥的种类完全不同,还是因为它们存储在不同的地方,还是出于其他原因或原因的组合,例如历史原因?

security ssh ssh-agent public-key-encryption

15
推荐指数
1
解决办法
3384
查看次数

使用来自 ssh-agent 的指定密钥

沿着如何告诉 git 使用哪个私钥? 我想在特定情况下使用特定的 ssh 密钥。

我的问题是,即使我指定了“-i something”,ssh 也会按照添加顺序使用来自我的 ssh-agent 的密钥。

我的具体情况:

  • 我有两个 github 用户,每个用户都有我想要的自己的密钥 - 例如通过 ssh-config - 为每个克隆指定要使用的密钥:
   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 的密钥,则仍将使用。

ssh github ssh-agent

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

为什么我必须不断解锁我的 SSH 密钥?

我运行了一些 X 应用程序ssh -Y my_address,现在每次使用它时它都会要求我解锁我的 RSA 密钥。我以前每天只需要解锁一次。这是怎么回事?

我正在使用 Ubuntu 9.04。

ssh ssh-agent ubuntu

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

SSH 代理在重启机器时丢失身份

id_rsa在其默认位置创建具有名称的密钥后。我正在使用命令向 SSH 代理添加身份ssh-add ~/.ssh/id_rsa,添加成功。

我可以在不输入密钥密码的情况下进行 SSH,因为它已经与 SSH 代理一起使用了。

但是,当我重新启动机器或服务器,然后使用命令检查身份时,ssh-add -L我收到类似The agent has no identities.

这是否意味着当我们重新启动机器时,Agent 丢失了身份?这是正常行为还是我在这里缺少的东西?

请指导我,我对SSH不太熟悉。

ssh terminal sshd ssh-agent macos

14
推荐指数
2
解决办法
9311
查看次数

Mac 上的 Filezilla:使用无密码身份验证的 SFTP?

我正在尝试按照 OSX 此处的说明进行操作

http://wiki.filezilla-project.org/Howto

我可以ssh在没有用户名/密码的情况下成功到达目标服务器(OSX 从~/.ssh目录中获取我的证书),但我不知道如何让 Filezilla 做同样的事情。

我试过只是跑步ssh-agent,但没有太大作用。

filezilla ssh-agent

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

沉默 ssh-add

我有一个运行一些任务的 cronjob,在它运行的脚本的开头是一个 ssh-add 调用(它不以具有适当密钥的用户身份运行,因此它需要添加,将来它很可能使用部署版本控制中定义的密钥)。这看起来像这样:

ssh-agent bash -c "ssh-add /home/tomjn/.ssh/id_rsa; etc... "
Run Code Online (Sandbox Code Playgroud)

我想让它静音,因为这个 cronjob 定期运行,而且我的收件箱中有很多电子邮件对我来说完全没有用,说明是的,添加了密钥。我只想要出现问题时的电子邮件,例如 git pull 远程连接挂断等,这确实会发生。

所以 TLDR,我一直看到这个:

添加的身份:/home/tomjn/.ssh/id_rsa (/home/tomjn/.ssh/id_rsa)

我怎么闭嘴?

我试过这样的事情:

ssh-add /home/tomjn/.ssh/id_rsa > /dev/null
Run Code Online (Sandbox Code Playgroud)

但无济于事。手册页没有表明有一个--quiet参数,我还能做些什么来使输出静音?

ssh ssh-agent

13
推荐指数
1
解决办法
7345
查看次数

如何在 Mac 终端上进行 SSH 代理转发?

我已经检查了很多关于这个的教程,但没有弄清楚。

根据 tuts,有两种方式可以配置代理转发

  1. 在您的配置文件~/.ssh/config集中

    Host example.com
    
    ForwardAgent yes
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过添加身份,例如ssh-add.

它有什么用

  1. SSH 代理转发用于存储密钥密码。这样我们就不需要每次都输入密码?

  2. 我们是否需要两台服务器来测试 SSH 代理转发?请建议。或者我们也可以使用单个服务器进行测试?

我已经检查了这个git hub 链接并遵循了相同的步骤。我可以看到代理。运行此命令时echo "$SSH_AUTH_SOCK" 是否意味着它正在工作?

我怎样才能用我的服务器做到这一点?请指导我。

更新: 当我尝试 ssh 时,我在终端中收到此错误消息

代理承认未能使用密钥签名。

ssh terminal sshd ssh-agent macos

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