问题标签 [ssh-agent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
226 浏览

ssh - 在外部驱动器上存储 ssh 密码

为了访问服务器,我们使用ssh受密码保护的密钥。

我们想要生成一个长密码,这样密钥本身就不足以访问该机器,而且密码也很难被破解。

ssh-agent可以存储密码。然而,问题是这样的代理将密码短语存储在客户端的文件中,如果可以访问客户端计算机,则可以更轻松地访问服务器。

是否可以将部分密码短语存储在外部驱动器上。在这种情况下,可以将密码存储在随身携带的 USB 驱动器上,并且访问服务器仍然很方便。如果ssh-agent可以自动检测驱动器,这样就可以调用ssh而不必将外部驱动器“绑定”到第一个驱动器,那就太好了ssh-agent

因此,一个人应该只能访问服务器,因为他/她可以访问客户端(存储ssh密钥)和外部驱动器(存储密码)。

0 投票
1 回答
1168 浏览

git - 使用多个身份登录时启动 ssh-agent

我使用的计算机上有多个 ssh rsa 密钥。这导致我有一个位于如下的文件~/.ssh/config

这是此链接要添加的内容:

遵循问题Start ssh-agent on login的建议后,我可以在打开终端时加载 ssh 密钥,如下所示:

如何在终端启动时自动添加我的其他 rsa 密钥之一的身份serveridbitbucketid

0 投票
1 回答
3712 浏览

linux - SSH - 只输入一次密码

$ ssh localhost,我被要求提供密码。为每次登录提供密码既乏味又烦人。

所以,我用密码创建了 ssh 密钥。

我已将 to 的内容复制~/.ssh/id_rsa.pub~/.ssh/authorized_keys

现在,$ ssh localhost我被要求提供密码。没有改进,但我没有提供密码,而是提供了密码

我遇到了将公钥添加到 ~/.ssh/authorized_keys 不会让我自动登录,但它并没有解决我的问题。正如评论所述,如果密钥是使用密码创建的,它将始终要求输入密码。

但是,如果ssh 密钥是在没有 passphrasessh的情况下创建的,则任何操作都不需要密码。

这篇文章的关键是冗长的标志-v

在搜索时,PEM_read_PrivateKey failed我遇到了很多帖子,其中一些来自 stackoverflow 本身。

但找不到合适的解决方案。

然后我遇到了设置无密码、无密码的 ssh,它说明了使用 ssh 代理自动输入密码。

或者

但同样,它只解决了那个特定的会话。每次我开始一个新会话时,我都必须执行

我可以将它添加到我的 .bashrc 或 .zshrc 中,但是为每个会话输入密码很烦人。

有没有办法在会话中使用相同的 ssh-agent?

0 投票
1 回答
199 浏览

ubuntu - ssh-add 添加不正确的密钥

背景:我正在尝试编写一个使用 capistrano 部署 rails 应用程序的 jenkins 作业。作为其中的一部分,我需要将已复制的 ssh 密钥添加到该环境中 jenkins 用户的 .ssh 文件夹中。我已在该文件夹中正确设置了 id_rsa 和 id_rsa.pub 的所有者、组和权限。

我收到错误Net::SSH::AuthenticationFailed: Authentication failed for user deploy@[server]。经调查,当我以 jenkins 用户身份运行以下命令时,会发生以下情况:

ssh-add ~/.ssh/id_rsa

到目前为止,一切都很好。

但是 ~/.ssh/id_rsa.pub 的公钥不是由ssh-add -L

如果我在本地机器上执行相同的步骤,则会添加正确的密钥,并且我可以 ssh 进入环境。

为什么 ssh-add 似乎添加了错误的密钥(我似乎在系统的其他任何地方都找不到)?

0 投票
1 回答
1911 浏览

upstart - 在停止新贵作业时杀死生成的 ssh-agent 实例

我有一个新贵配置来启动我的守护进程(每次都与其他服务器建立 ssh 连接)。为了建立 ssh 连接,它使用存储在 ssh-agent 中的密钥。因此,在启动脚本中,我正在创建一个 ssh-agent 实例,但是在停止时我无法停止它。

在 pre-stop 部分,SSH_AGENT_PID 是空的,所以我无法杀死。这里可能是什么问题..

还有一个问题:我有很多生成的 ssh-agent 进程,我无法使用 ssh-agent -k 杀死它们,因为它是由其他一些 shell 生成的。有没有办法可以杀死这些进程(无需使用 kill 命令强行杀死它)。

0 投票
0 回答
1154 浏览

windows - git ssh 代理正在运行,但没有保存我的用户名或密码

最初设定

我正在使用 Posh-Git,并遵循了Phil Haack 的使用 SSH 的建议。也就是说,我做了以下事情:

  1. 安装 msysgit。
  2. 更新 Posh-Git
  3. 将 ssh-agent 添加到 PATH。

初始测试

现在,当我启动 Powershell 时,ssh-agent 确实启动了。这很好。如果我运行,Get-Proces我可以看到它:

但是,当它启动时,它不会询问我的用户名和密码。情况不妙。

此外,在单个 PowerShell 会话期间,git 反复询问我的用户名和密码,并且永远不会记住它。

查找我的 SSH 密钥

我的 SSH 密钥位于 中C:\Users\<my-user>\.ssh,我可以在其中看到两个文件:

我已经跑了ssh-add "C:\Users\<my-user>\.ssh\github_rsa"

代理仍然不记得我的凭据。

使用 Git Shell 进行测试

msysgit 带有 Git Shell,当我运行它时,身份验证就完美地通过了。从来没有要求我输入用户名和密码。

我在这里查看了配置 Git over SSH 登录一次的答案,建议检查我们使用的是 https 还是 ssh 协议。

在我的 Git Shell 和正常的 Windows PowerShell 提示符下,存储库都使用 HTTPS。

0 投票
1 回答
347 浏览

linux - 钥匙串 ssh-agent 信息不正确

我正在使用钥匙串,它可以完美地使用 ssh-agent 管理我的钥匙。

我想检查每个 linux 主机上 ssh-agent 的状态。我试过:

在本地,此命令有效并且是连贯的。

但是使用远程SSH命令,我不知道为什么结果不一样..:

也许有人可以解释我?这并不令人不安,因为我会监控 ssh-agent 状态..

谢谢。

编辑:即使启用了 SSH 代理转发,远程命令也只返回代理的本地状态。其他远程命令有效,无论是否加载密钥..

0 投票
1 回答
806 浏览

linux - 请解释 Linux bash exec 和 ssh-agent 行为

根据https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s3-openssh-config-ssh-agent.html

我需要执行exec /usr/bin/ssh-agent $SHELL,据我了解,它exec用我指定的程序替换了我当前的 shell。

我读了http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/ssh-agent.1?query=ssh-agent&sec=1,其中指出“如果给出命令行,这是作为代理的子进程执行。当命令死亡时,代理也会死亡。

所以我猜我期望的是 bash 被 ssh-agent 替换,但是因为我指定了一个命令行,所以执行了一个新的 bash,然后执行了 ssh-agent,并替换了旧的 bash。

到底发生了什么?

0 投票
1 回答
710 浏览

git - ssh conflicts / github permission denied but authentication success, what is wrong?

I already have a github account and using it without a problem using gitbash -clone/pull/push. Now I currently created another github account to work with a friend and realized I couldn't push due to account conflict or whatever it is called. So I created a new ssh key and went through a few threads but still didn't get it working but I am able to authenticate between two different git accounts but now I couldn't push or clone due to access rights.

I don't remember the exact all steps I did because I was going through different threads and trying different things. By the way I'm using windows.

1st

I went to the /.ssh and changed my previous id_rsa and id_rsa.pub into id_rsa_acc1 and id_rsa_acc2

2nd

I created another key using ssh-keygen -t rsa -C "email@email.com" my previous ssh uses the same email too

3rd

I went to the /.ssh and changed my new id_rsa and id_rsa.pub into id_rsa_acc2 and id_rsa_acc2

4th

in .ssh folder I created a file called config and added

5th

I login into github.com with my acc2 and added the ssh key in /.ssh/id_rsa_acc2.pub into github settings>SSH keys

6th

7th

8th

I couldn't find one of the error messages anymore but when I tried to push into the acc2 it said something about denying access because of acc1 or something like that. Then I tried using clone by ssh url and couldn't even clone any of these two accounts from github.

Now when I try to clone/push/pull I only get such error message Permission denied (publickey). fatal: Could not read from remote repository.

Can someone please give me a hand?

0 投票
0 回答
432 浏览

linux - 使用自定义 ssh-agent 与 Github 通信

我继承了一个当前已损坏的部署系统,我不知道如何修复它。

基本设置是向 ssh-agent 添加 3 个密钥,并通过 ThoughtWorks 的 Go 部署软件从 Github 中提取一些私有存储库。

我似乎需要运行一个可由多个用户帐户访问的 ssh-agent。

我已经启动了一个 ssh-agent 并向它添加了密钥,然后我能够从命令行克隆私有存储库而没有问题,但是当主应用程序(使用相同的用户帐户)尝试克隆它时失败了权限被拒绝错误。

我的猜测是,由于某种原因,应用程序无法访问持有密钥的 ssh-agent。

以下是我的说明:

  • 导出 SSH_AUTH_SOCK=/var/go/ssh-agent.sock
  • ssh-add ~/.ssh/go_deploy_id_rsa
  • ssh-add ~/.ssh/go_id_rsa
  • ssh-add ~/.ssh/deploy_id_rsa

当我设置 SSH_AUTH_SOCK 环境变量时,它似乎会杀死任何正在/正在运行的 ssh-agent,当我发出 ssh-add 命令时,我得到了经典:

“无法打开与您的身份验证代理的连接。”

所以基本上我如何启动 ssh-agent 并让它使用我之前定义的 SSH_AUTH_SOCK 并保持运行,以便 Go 应用程序在与 Github 通信时使用它?

这个用途可以工作,所以我知道该设置在技术上是有效的。

已解决:原来我使用的 ssh-agent 套接字已经过时了。删除套接字并重新创建它允许添加密钥并再次进行通信。