我使用eit和git(egit).
我想利用我的ssh-agent所以我可以从日食中推出.有谁知道如何设置egit使用ssh-agent?
背景:我无法将我的密钥上传到eclipse,因为我的密钥是在cryptostick上.我的ssh-agent可以在opensc的帮助下加载.
我想在构建时将代码从Github拉入我的Docker镜像.我有一个从存储库生成的部署密钥,但在我看来,ssh-agent不能处理我的Docker镜像.
我做了什么(我的Dockerfile):
FROM python:2.7-stretch
ADD ./id_rsa /root/.ssh/id_rsa
RUN eval "$(ssh-agent -s)"
RUN ssh-add -K /root/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
输出:
Step 12/22 : RUN eval "$(ssh-agent -s)"
---> Running in f9ad80981cee
Agent pid 6
Removing intermediate container f9ad80981cee
---> d773f7ce5917
Step 13/22 : RUN ssh-add -K /root/.ssh/id_rsa
---> Running in 95efeed6a7ad
Could not open a connection to your authentication agent.
The command '/bin/sh -c ssh-add -K /root/.ssh/id_rsa' returned a non-zero code: 2
Run Code Online (Sandbox Code Playgroud)
如您所见,ssh-agent已启动,但密钥未添加.
如果我跳过SSH-添加步骤,然后我的git拉失败的,后来因为特权,它是如预期没有发生认证失败.
我在 Windows 机器上复制 dockerfile 中的 ssh 密钥用于开发目的,但无法获取 SSH_AUTH_SOCK 变量集,
这是我的 Dockerfile
FROM node:alpine
WORKDIR /usr/src/app
COPY package.json .
ADD id_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa \
&& touch /root/.ssh/known_hosts \
&& ssh-keyscan -H github.com >> /root/.ssh/known_hosts \
&& eval `ssh-agent -s` && ssh-add /root/.ssh/id_rsa
RUN yarn
CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)
我尝试在我的撰写文件中评估 ssh-agent 的结果
command: >
sh -c 'eval `ssh-agent -s`
&& ssh-add /root/.ssh/id_rsa
&& echo $SSH_AUTH_SOCK'
Run Code Online (Sandbox Code Playgroud)
当我执行简单的 nodejs 文件时,SSH_AUTH_SOCK未设置。
printenv也没有显示出来,有没有办法做到这一点。
我可以看到有很多适用于 linux 和 osx 的 ssh-agent …
我想使用 ssh-add 加载受变量密码保护的 ssh 密钥。
当我尝试从文件加载它时,效果很好。
eval $(ssh-agent)
DISPLAY=1 SSH_ASKPASS="passwordfile" ssh-add id_rsa < /dev/null
现在我想将密码和 id_rsa 分配给变量并使用如下内容:
eval $(ssh-agent)
DISPLAY=1 SSH_ASKPASS="$PASSPHRASE" ssh-add $ID_RSA < /dev/null
我怎样才能实现这个目标?
所以事实证明这对谷歌来说是一件非常困难的事情。我有一个工作设置,我可以在一天结束时休眠或关闭的笔记本电脑上运行所有内容。这样做显然会切断我在 puTTY 中的 SSH 会话。经过一番摸索,我发现了一种在通过 puTTY 连接时自动启动屏幕并获取断开连接的会话的好方法(即,添加if [ -z "$STY" ]; then screen -R; fi到我的 .bashrc 的末尾)。
这非常有效,但我仍然有问题。我使用 SSH 代理通过我的笔记本电脑上的 Pageant(我最初输入密码的地方)转发到辅助服务器。据我所知,当 puTTY 会话中断时,此套接字已损坏,并且在重新加载和重新连接到 screen时不会重新连接。
这是我的测试:
20:01:38 {~/test}$ git clone git@github.com:coldcandor/env.git
Cloning into 'env'...
remote: Counting objects: 1105, done.
remote: Total 1105 (delta 0), reused 0 (delta 0), pack-reused 1105
Receiving objects: 100% (1105/1105), 341.06 KiB | 453.00 KiB/s, done.
Resolving deltas: 100% (544/544), done.
Checking connectivity... done.
20:01:43 {~/test}$ rm -rf env
Run Code Online (Sandbox Code Playgroud)
断开油灰并重新连接
20:01:58 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Windows 安装的 Jenkins (v2.103) 上配置 SSH 代理插件 (v1.15),以便能够通过 ssh 向远程计算机发出命令。
我已经安装了该插件,并在 Jenkins Credentials 中添加了一个条目(如下所示),其中包含可以登录远程计算机(主机名:corp-wfdemo)的私钥和密码。我已经确认此密钥可用于验证运行 Jenkins 的用户。
我创建了一个 Pipeline 项目并添加了这个 Groovy 脚本来测试 ssh:
node ('ssh') {
stage ('test') {
sshagent(['corp-wfdemo']) {
sh 'ls -la'
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jenkins大师有这个标签ssh。这是一台安装了 Git Bash (MINGW64) 的 Windows Server 2012 计算机。
当我尝试运行此作业时,尝试查找某些自动生成的askpass.sh 脚本时失败。这是输出:
有人可以帮忙吗?提前致谢!
另外,每次我尝试运行此作业时,ssh-agent都会生成一个新实例,但不会终止,留下这样的混乱:
我总是只是生成 ssh 密钥,然后将其添加到 GitHub 就完成了:我可以克隆或推送到 GitHub 并执行所有任务。
但现在我看到“将你的 SSH 密钥添加到 ssh-agent ”,我可以跳过整个部分,一切似乎仍然有效。为什么需要这样做?如果不执行此步骤会发生什么?
我正在尝试在 jenkins 管道中使用容器,但是我无法让 ssh-agent 在其中工作。我使用的是 v1.19 插件,当我运行下面的代码时,我得到
主机密钥验证失败。致命:无法从远程存储库读取。
请确保您拥有正确的访问权限并且存储库存在。
但是,如果我从图像外部运行代码,它会完美运行,证明用户具有正确的权限。
node('nodeName'){
cleanWs()
ws("short"){
withDockerRegistry([credentialsId: 'token', url: "https://private.repo.com"]) {
docker.image("img:1.0.0").inside("-u root:root --network=host") {
sshagent(credentials: ["bitbucket_token"]) {
sh "mkdir ~/.ssh"
sh 'ssh-keyscan bitbucket.company.com >> ~/.ssh/known_hosts'
sh 'git clone ssh://git@bitbucket.company.com:PORT/repo.git'
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
[Pipeline] sshagent
[ssh-agent] Using credentials jenkins (bitbucket_token)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine)
$ docker exec abcdef123456 ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-qwertyu/agent.15
SSH_AGENT_PID=22
Running ssh-add (command line suppressed)
Identity added: /home/jenkins/short@tmp/private_key_8675309.key (/home/jenkins/short@tmp/private_key_8675309.key) …Run Code Online (Sandbox Code Playgroud) 我\xe2\x80\x99m 在 Windows 上运行 Apache Netbeans 12,并且我\xe2\x80\x99m 很难使用 SSH 连接连接到我的 github 存储库。\n我强烈地感觉到,这对于 Netbeans 用户来说一直是一个问题很长一段时间。\n到目前为止我\xe2\x80\x99已经尝试过:
\n当我搜索手动启动 ssh-agent 的 PID 时,我还发现了 process /usr/bin/ssh-agent -l。我试图在 man 中找到描述,但找不到。该标志是什么-l?它有用吗?