已解决:使用 RSA 令牌通过主机到网络上的服务器的 Docker 容器隧道



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

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

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

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

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

这是我正在运行的 docker 命令,用于启用从主机到容器的 ssh 代理转发:

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配置的一个片段:

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 令牌的身份验证失败。有没有办法解决这个问题?

已解决

好的,所以我玩了我的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

通过修改此部分,它显式强制连接通过映射到 conatainer 本身上的本地主机的 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(securid(令牌进行身份验证时,它允许我在出现提示时使用(通过主机的隧道(通过容器进行身份验证 - 与以前不同。

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

相关内容

最新更新