gpt4 book ai didi

ubuntu - 通过 ssh 连接到 CentOS 7 上的 jhipster docker 容器

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:06 27 4
gpt4 key购买 nike

我已经安装了 docker(版本 0.11.1-dev,构建 02d20af/0.11.1);似乎是 CentOS 7 的最新版本(yum update docker 表示没有更新)。

根据 installation instructions on jhipster site我已经拉出当前图像并运行:

sudo docker run -v ~/jhipster:/jhipster -p 8080:8080 -p 9000:9000 -p 4022:22 -t --name jhipster jdubois/jhipster-docker

图像运行正常。但是我无法通过 ssh 连接。如果我使用详细选项运行 ssh:

ssh -vv -p 4022 jhipster@localhost

我得到:

OpenSSH_6.4, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 51: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [::1] port 4022.
debug1: Connection established.
debug1: identity file /home/normunds/.ssh/id_rsa type 1
debug1: identity file /home/normunds/.ssh/id_rsa-cert type -1
debug1: identity file /home/normunds/.ssh/id_dsa type -1
debug1: identity file /home/normunds/.ssh/id_dsa-cert type -1
debug1: identity file /home/normunds/.ssh/id_ecdsa type -1
debug1: identity file /home/normunds/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6p1 Ubuntu-2ubuntu1
debug1: match: OpenSSH_6.6p1 Ubuntu-2ubuntu1 pat OpenSSH*
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
Connection closed by ::1

如果我尝试访问另一台 Ubuntu 主机,我会收到相同的序列(主机、端口和 OpenSSH 版本除外),但不是最后一行“连接已关闭”,而是:

debug1: SSH2_MSG_KEXINIT received

最终连接成功。

我尝试通过localhost:4022ip-of-container:22 连接;来自具有相同结果的本地或远程主机。

所以问题似乎出在容器或 docker 中(或最终在 docker 中的 ubuntu 设置中)。然而,docker top jhipster 显示 sshd 正在运行,并且 - 是的,跟踪显然显示我到达了 ssh 服务器。

有什么想法吗?

已编辑 我运行 docker image,以便它进入命令行,然后在 Debug模式下运行 sshd:

sudo docker run -v ~/projects:/jhipster -p 8080:8080 -p 9000:9000 -p 4022:22 -t -i --name jhipster jdubois/jhipster-docker /bin/bash

/usr/sbin/sshd -d

为了进一步调试。连接尝试 sshd 失败并显示:

chroot("/var/run/sshd"): Operation not permitted [preauth]

最佳答案

1) ssh 访问

中央操作系统 7看来问题是 CentOS 7 存储库只有一个旧的 Docker 版本; CentOS 6Ubuntu 都使用版本 1.1.2。 CentOS 7 上的问题可以通过使用命令行选项运行图像(如 OP 的编辑部分)然后运行来绕过:

sed 's/UsePrivilegeSeparation yes/UsePrivilegeSeparation no/' -i /etc/ssh/sshd_config

/usr/sbin/sshd

中央操作系统 6在运行 Docker 1.1.2 的 CentOS 6 中进行测试时,我没有遇到同样的问题(ssh 连接更进一步,因此我假设错误在 CentOS 7 上是由 Docker 版本引起的),但是 ssh 连接后立即断开连接,客户端 pam session 出现错误未打开并且在容器端 PAM:pam_open_session():无法为指定 session 创建/删除条目

这里看起来它与 [FIXED] ubuntu 14.04 container with ssh login issues #5663 有关.即使它被标记为“固定”。无论如何,我尝试的线程中提到的解决方案之一足以解决我的 ssh 连接问题:

sed '/pam_loginuid.so/s/^/#/g' -i /etc/pam.d/*

看来,运行起来也够了:

sed 's/UsePAM yes/UsePAM no/' -i /etc/ssh/sshd_config

相反,但我没有尝试这个选项。

结论:CentOS 上的ssh 连接可以通过使用命令行运行图像来修复

sudo docker run -v ~/projects:/jhipster -p 8080:8080 -p 9000:9000 -p 4022:22 -t -i --name jhipster jdubois/jhipster-docker /bin/bash

然后如上所述针对 CentOS 6/CentOS 7 进行不同的“修复”,然后

/usr/sbin/sshd

2) 此时我们可能会问:“为什么要ssh”?一旦我们到达命令行,我们需要做的就是:

su jhipster
cd /jhipster
yo jhipster

对吧?几乎是这样,但这里我们还有另一个问题。在两个 CentOS 版本上又有所不同。如果我们通过 ssh 连接,它也会存在。

在使用旧 Docker 版本的 CentOS 7 上,我们需要修改主机目录的 selinux 上下文(在我们的例子中是 ~/jhipster ):

chcon -Rt svirt_sandbox_file_t ~/jhipster

CentOS 6 上,这不是必需的(并且 svirt_sandbox_file_t 不作为选项存在),但是容器内的共享文件夹对用户不可用 赶时髦的人。我们首先,作为 root,需要运行:

chown jhipster:jhipster /jhipster

然后已经:

su jhipster
cd /jhipster
yo jhipster

关于ubuntu - 通过 ssh 连接到 CentOS 7 上的 jhipster docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25428669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com