问题标签 [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.
php - 无法通过 capistrano 和 symfony2 bin/vendors 安装使用代理转发的 ssh 密钥
我们使用 ssh 代理转发将 Symfony2 项目部署到我们的服务器。这工作正常,我们使用 capistrano 从 github 执行 git clone 等没有问题。
但是,对于 Symfony2,您需要执行 bin/vendors install 以获取最新的 deps。这个供应商脚本 ( https://github.com/symfony/symfony-standard/blob/2.0/bin/vendors ) 是一个执行“system()”命令的 php 脚本,例如 git pull。
在 capifony(capistrano 和 symfony 的插件)中实现了供应商命令,我们对其进行了一些修改以使用 try_sudo,由于我们自己的托管平台需要进行更改。这非常适合来自 github 的公共 https:// url
try_sudo "sh -c 'cd #{latest_release} && #{php_bin} bin/vendors install'"
我们面临的问题是,当使用 git@github.com 格式时(需要一些私有 repo 以及当我们想要修改捆绑包并将更改推回时)ssh-agent 不可用,因此我们的转发密钥丢失并且我们得到权限被拒绝的错误。
- 切换到 https:// 格式听起来很容易解决,但私人仓库要求输入密码。
- 在 system() 命令中启动 ssh-agent 有效,但是密钥仍然不存在。
所以不知道进一步寻找什么。将 ssh-agent 传递到 php 供应商脚本的某种方式可能是什么?
更新:
我找到了答案,出于安全原因,sudo 删除了所有环境变量,因此您永远无法附加到现有的 ssh 代理。
在https://serverfault.com/questions/107187/sudo-su-username-while-keeping-ssh-key-forwarding我发现了错误和解决方案。通过将默认值 env_keep+=SSH_AUTH_SOCK 添加到 /etc/sudoers,然后对代理套接字进行 chmodding 以便您正在 sudo 访问的用户可以访问它,您可以保留 ssh 代理。
但是请仔细阅读线程,这样做是不安全的。注销时代理会被销毁,因此在我们的 capistrano 部署序列中,结合没有不受信任用户的服务器,我认为这可能是可以接受的。除非我记错了?
cygwin - 安装 Cygwin 后 SSH 代理不再启动
安装了 msysGit,编写了启动 ssh-agent 的代码.profile
,一切正常。
安装了 cygwin,没有 Git,只有 ssh 和 cURL。
当 Git bash 打开时 SSH 代理不再启动。
我可以启动一个新的 ssh-agent 进程实例,我在 Git bash 中运行时看到它ps
,但是在尝试使用时ssh-add
,我收到此错误:
Could not open a connection to your authentication agent.
使用 cygwin,在它的安装文件夹 (C:\cygwin) 中创建了许多.profile
文件.bashrc
。不确定这是否是问题所在。
请问我该如何解决这个问题?
python - 在不登录的情况下使用 ssh-agent
我们想使用 ssh-agent 通过 ssh 自动连接到多台机器,使用 ubuntu 机器上的专用用户(12.04);问题是因为我们已经通过脚本生成了这个用户
而且我们没有登录该用户,ssh-agent 没有运行,并且任何尝试使用 ssh 而不提供密码(我们使用 python 和 paramiko)都失败了
我们做了一些研究,发现很多人会用这个命令行启动 ssh-agent
但这对我们不起作用(尤其是当上述命令通过 python 执行时)。
让它工作的唯一方法是登录到该用户(例如通过 ssh)并输入上面的命令,这使得我们的自动化方法不那么自动化:有没有办法让 ssh-agent 在启动时启动而无需登录到专用用户?
ssh-agent - 跨共享主机上的 ssh 会话的 ssh-agent
我通过 ssh 连接到一个共享主机(WebFaction),然后使用它ssh-agent
来建立到一个 mercurial 存储库(BitBucket)的连接。我这样称呼代理:
然后这会喷出代理的 pid 并设置其相关的环境变量。然后我使用 ssh-add 如下添加我的身份(在输入我的密码后):
我的 ssh 连接最终超时,我与服务器断开连接。当我重新登录时,我无法再连接到 Hg 服务器,所以我这样做:
然后重复帖子顶部的两个命令(即使用eval
和调用调用代理ssh-add
)。
我确信有一个成熟的习语可以避免这个过程并保持对最初产生的代理的“引用”。我尝试将第一个命令的 I/O 重定向到一个文件(希望在我.bashrc
的 .
我如何避免每次 ssh 进入主机时都必须经历这个过程?
我的 *NIX 技能很弱,因此欢迎对帖子的任何方面提出建设性的批评,而不仅仅是我使用ssh-agent
.
windows - gitbash(缓存密码密钥):无法让 ssh-agent 在 Windows 上运行,修改了 .bashrc 和 .profile
谁能帮忙,我在 Windows 上,git 正在使用我的源设置为 github。
当然,每次我希望拉/推或任何我需要为 github 提供密钥的密码时。
根据我所阅读的内容,我需要编辑 ~/.profile 或 ~/.bashrc 并输入一些文本
见https://help.github.com/articles/working-with-ssh-key-passphrases
我已经这样做了很多次,我实际上在两个文件中都输入了它,但是当我打开一个新的 GitBash 窗口时,似乎什么都没有运行(我假设某些东西应该运行并根据上面的链接询问我的密码)。
因此,当然,每次 Push 或 Pull 都会再次要求我输入密码。
我显然在这里遗漏了一些东西,有人可以帮忙吗?
记住我在 Windows 上 :-) 并使用 git 附带的 gitbash for windows。
提前致谢
ssh - 腻子选美协议?
ssh-agent 有一个协议,可以将数据发送给它以由特定的私钥签名:
http://api.libssh.org/rfc/PROTOCOL.agent
在 Linux 中,使用 ssh-agent,您可以打开一个 Unix 域套接字到 SSH_AUTH_SOCK 并将数据包发送到该套接字。但是,Windows 没有 Unix 域套接字。
有任何想法吗?
谢谢!
ssh - 尽管 ssh-agent 已启动,但 SSH-add 不是持久事件
我做了ssh-add。在会话期间它工作正常,但是当我退出并使用 ssh 重新连接到服务器时,它不再工作 ssh-add -l 说:没有身份。
我确实使用 eval $(ssh-agent) 在我的 .bash_profile 中启动了 ssh-agent。
任何想法我可以做些什么来保持身份?
// 编辑 所以这是我的场景。我正在使用 ssh 连接到我的网络空间。我想使用 git pull 从 github 中提取数据。我添加了到 github 的连接并且 git pull 工作正常。但它要求输入密码。执行 ssh-add 并添加密码可以停止,但仅适用于当前会话。
我必须使用类似的东西来启动 ssh-agent,eval $(ssh-agent)
因为它不会在服务器上自动启动。
我遇到的主要问题是,我需要一个脚本来执行来自 github 的请求调用的 git pull,所以我不能给它密码。
ssh - 如何使 ssh-add 从文件中读取密码?
我正在尝试添加一个密钥ssh-agent
并想ssh-add
从我正在使用的密钥文件中读取密码。这怎么可能?
如何从 shell 脚本自动执行此过程?
eclipse - Eclipse git 和 ssh-agent
我将 eclipse 与 git (egit) 一起使用。
我想使用我的 ssh-agent,这样我就可以从 Eclipse 推送。有人知道如何设置 egit 以使用 ssh-agent 吗?
背景:我无法将我的密钥上传到 Eclipse,因为我的密钥在密码棒上。我的 ssh-agent 可以在 opensc 的帮助下加载。
ssh - 带有 openssh 密钥的 TortoiseGit 未使用 ssh-agent 进行身份验证
我在 Windows XP(msysGit 1.7.11,TortoiseGit 1.7.14)上设置了一个 git 环境,并试图实现以下几点:
- 与默认 22 不同的端口上的 ssh 连接
- 由 ssh-agent 处理的 ssh 身份验证
所以我创建了一个~/.ssh/config文件:
使用 git bash CLI 时,一切都按预期工作。
我正在与 TortoiseGit 斗争。
我首先使用 Plink 安装 TortoiseGit 并使用 Pageant 加载 ssh 私钥。自动身份验证(选美)工作但设置失败,因为 TortoiseGit 无法识别格式为gitolite@gitbox/repo.git的 git repos url 。
然后我决定使用 openssh 客户端安装 TortoiseGit,以便ssh 客户端可以读取配置文件,并模仿 git CLI 设置。
我在 TortoiseGit 设置中选择了msys git 附带的 ssh.exe 作为 ssh 客户端。
执行 agit pull
时,远程 url 现在已解析,但在我希望 ssh-agent 自动身份验证发生时询问密码密码。
是否可以让 TortoiseGit 与 ssh-agent 一起使用?
或者让 TortoiseGit (Plink) 知道.ssh/config?
编辑#1
按照@VonC 的建议,我配置了我的 $HOME 变量。
当我在 TortoiseGit 中单击Show environment variables时,我现在有:
但git pull
仍然需要我输入密码。