当前位置: 首页 > 知识库问答 >
问题:

在macOS上使用ssh代理和docker

罗翔
2023-03-14

我想使用ssh代理将我的密钥转发到docker映像中,并从私有github repo中提取密钥。

我使用的是稍微修改过的版本https://github.com/phusion/passenger-docker约塞米蒂岛上的boot2docker。

ssh-add -l
...key details
boot2docker up

然后我使用我在许多地方看到的命令(即。https://gist.github.com/d11wtq/8699521):

docker run --rm -t -i -v $SSH_AUTH_SOCK:/ssh-agent -e SSH_AUTH_SOCK=/ssh-agent my_image /bin/bash

但是,它似乎不起作用:

root@299212f6fee3:/# ssh-add -l
Could not open a connection to your authentication agent.

root@299212f6fee3:/# eval `ssh-agent -s`
Agent pid 19

root@299212f6fee3:/# ssh-add -l
The agent has no identities.

root@299212f6fee3:/# ssh git@github.com
Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
Permission denied (publickey).

共有3个答案

濮阳祯
2023-03-14

我扩展了@wilwilson的答案,并创建了一个脚本,该脚本将在OSX boot2docker环境中设置代理转发。

https://gist.github.com/rcoup/53e8dee9f5ea27a51855

#!/bin/bash

# Use a unique ssh socket name per-invocation of this script
SSH_SOCK=boot2docker.$$.ssh.socket

# ssh into boot2docker with agent forwarding
ssh -i ~/.ssh/id_boot2docker \
    -o StrictHostKeyChecking=no \
    -o IdentitiesOnly=yes \
    -o UserKnownHostsFile=/dev/null \
    -o LogLevel=quiet \
    -p 2022 docker@localhost \
    -A -M -S $SSH_SOCK -f -n \
    tail -f /dev/null

# get the agent socket path from the boot2docker vm
B2D_AGENT_SOCK=$(ssh -S $SSH_SOCK docker@localhost echo \$SSH_AUTH_SOCK)

# mount the socket (from the boot2docker vm) onto the docker container
# and set the ssh agent environment variable so ssh tools pick it up
docker run \
    -v $B2D_AGENT_SOCK:/ssh-agent \
    -e "SSH_AUTH_SOCK=/ssh-agent" \
    "$@"

# we're done; kill off the boot2docker ssh agent
ssh -S $SSH_SOCK -O exit docker@localhost

将其粘贴到~/bin/docker run sshchmod x中,并使用docker run ssh而不是docker run

纪正德
2023-03-14

一行:

下面是如何在运行Debian Jessie图像的Ubuntu 16上设置它:

docker run --rm -it --name container_name \
-v $(dirname $SSH_AUTH_SOCK):$(dirname $SSH_AUTH_SOCK) \
-e SSH_AUTH_SOCK=$SSH_AUTH_SOCK my_image

https://techtip.tech.blog/2016/12/04/using-ssh-agent-forwarding-with-a-docker-container/

翁阳曜
2023-03-14

由于版本2.2.0.0,docker for macOS允许用户在容器内访问主机的SSH代理。

下面是一个示例命令,让您执行此操作:

docker run --rm -it \
-v /run/host-services/ssh-auth.sock:/ssh-agent \
-e SSH_AUTH_SOCK="/ssh-agent" \
my_image

请注意,您必须装载特定路径(/run/host services/ssh auth.sock),而不是$ssh\u auth\u sock环境变量中包含的路径,就像在linux主机上一样。

 类似资料:
  • 我曾经能够在NetBeans 8中安装和使用Sass,如关于如何在NetBeans 8.0.1中使用Sass的顶级答案所述 现在,使用当前版本的Sass(1.14.1),安装是不同的。基本上只是下载和解焦油。完成了,我已经将NetBeans指向了正确的位置。但是当前版本的Sass不能从NetBeans中正确运行:

  • SSH代理服务即平台上的SSH服务,用于与SSH代理节点管理的虚拟机建立转发规则。 SSH代理服务即平台上的SSH服务,用于与SSH代理节点管理的虚拟机建立转发规则。系统创建完成后,会自动部署一个Pod作为SSH代理服务,当环境更新或监听地址变更时,后端将会根据实际情况更新监听地址和服务地址。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “网络/SSH代理/SSH代理服务” 菜单

  • SSH代理节点用于建立平台与VPC网络之间的通信隧道,实现平台对VPC中资源的管理,安装监控Agent,收集监控数据等。 SSH代理节点用于建立平台与VPC网络之间的通信隧道,实现平台对VPC中资源的管理,安装监控Agent,收集监控数据等。 通过在VPC中选择一台能与外网联通的虚拟机作为SSH代理节点,后续平台可以通过该SSH代理节点的local forward为VPC内网络互通的虚拟机安装Ag

  • SSH代理服务用于建立平台与VPC网络之间的隧道,实现平台对VPC中资源的管理。 SSH代理节点 SSH代理节点用于建立平台与VPC网络之间的通信隧道,实现平台对VPC中资源的管理,安装监控Agent,收集监控数据等。 SSH代理服务 SSH代理服务即平台上的SSH服务,用于与SSH代理节点管理的虚拟机建立转发规则。

  • 我正在使用git bash。我得用 每次我开始新的git bash时。 有没有办法永久设置ssh代理?或者windows有管理ssh密钥的好方法吗? 我是新人,请给我详细的教程,谢谢!

  • 试图在IntelliJ上启动我的代码,但我的Mac(Big Sur)阻止了libprism_es2.dylib和libjavafx_font。dylib,因为它们未经验证。从设置中绕过“无论如何打开”不起作用。 我怎么解决?