【问题标题】:SOLVED: Docker container tunnelling through host to servers on network with RSA token已解决:使用 RSA 令牌通过主机到网络上的服务器的 Docker 容器隧道
【发布时间】:2020-06-13 10:58:59
【问题描述】:

我正面临一个似乎很奇怪的问题,希望得到一些帮助。

背景:为了我的日常工作,我从自己的机器(Macbook pro 笔记本电脑)访问多个服务器, 通过堡垒主机,然后通过另一个跳转框,然后到达我需要访问的单个服务器。像这样:

local machine -> bastion host -> jump box -> server

我通过 RSA(安全)令牌代码(这与我的 ssh id_rsa 密钥不同)对堡垒主机进行身份验证,并通过 LDAP 凭据对后续系统进行身份验证。 例如:当我 ssh 到堡垒时,我看到 Enter Passcode:(我的 RSA 安全令牌),而当我 ssh 到堡垒之外的主机时,我看到 Enter Password:(我的 LDAP)

问题:我有许多脚本/工具可以自动化我的大部分日常工作,我想在我的本地机器上运行这些容器,因为不允许在其上运行容器我连接的盒子。 我试图通过在我的本地机器上运行 Debian 的容器(通过基本 ssh)连接到其中一台服务器。我尝试照常插入我的 RSA 令牌,但在通过容器进行身份验证时失败。

这是我正在运行的 docker 命令以启用从主机到容器的 ssh-agent 转发:

docker run -it --mount type=bind,src=$SSH_AUTH_SOCK,target=/run/host-services/ssh-auth.sock -e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock

当我通过以下方式连接时:

local machine -> bastion host 并使用我的 RSA 令牌,我验证正常。

这是我的 SSH 配置的 sn-p:

Host *
    ControlMaster auto
    ControlPath ~/.ssh/master-%C
    TCPKeepAlive true
    ServerAliveInterval=15
    ServerAliveCountMax=30
    ForwardAgent yes

    Host John-Smith-Bastion jsb  # Bastion Host
        HostName 10.0.2.123
        LocalForward 31590 10.101.10.12:22
        Port 321

    Host John-Smith-Jump jsm # Jump Host
        HostName 10.101.10.12
        ProxyCommand \ssh John-Smith-Bastion -W %h:%p
        LocalForward 127.0.0.1:2080 10.101.10.24:80

我不确定为什么当我尝试通过容器 -> 堡垒进行连接时,我的 RSA 令牌的身份验证失败。有没有办法解决这个问题?

【问题讨论】:

    标签: linux docker authentication ssh


    【解决方案1】:

    已解决

    好的,所以我玩弄了我的 SSH 配置。

    Host *
        ControlMaster auto
        ControlPath ~/.ssh/master-%C
        #ControlPath ~/.ssh/master-%r@%h:%p
        TCPKeepAlive true
        ServerAliveInterval=15
        ServerAliveCountMax=30
        User waved218
        LocalForward localhost:8080 host.docker.internal:22
    

    通过修改此部分,它显式强制连接通过映射到容器本身上的 localhost 的 host.docker.container 进行连接。

    我还启用了容器网络作为主机本身。

    我使用的命令是:

    docker run -it --net=host  --mount type=bind,src=$SSH_AUTH_SOCK,target=/run/host-services/ssh-auth.sock -e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock" debian
    

    然后在容器本身中,我使用了我修改过的 ssh 配置文件(上图)。显然,这只是为了测试,以后会使用挂载点或类似的东西。

    当使用 RSA(安全)令牌进行身份验证时,它允许我在提示时使用(通过主机的隧道)通过容器进行身份验证 - 与以前不同。

    希望这对前来寻找的人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-08
      • 2018-11-18
      • 2016-05-18
      • 1970-01-01
      • 2011-04-08
      • 2020-11-22
      • 2011-11-27
      • 1970-01-01
      相关资源
      最近更新 更多