首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用正确的文件权限在坞内使用SSH?

问用正确的文件权限在坞内使用SSH?
EN

Stack Overflow用户
提问于 2022-10-04 23:19:26
回答 1查看 74关注 0票数 0

有一些关于如何使用Docker + SSH的帖子。还有关于如何编辑安装在停靠器容器中的文件的帖子,这样编辑它们就不会导致权限变成根用户。

我试图将这两件事结合起来,这样我就可以将SSH放入一个坞容器中,并编辑文件,而不会混淆它们的权限。

对于使用正确的文件权限,我使用:

代码语言:javascript
复制
      - /etc/passwd:/etc/passwd:ro
      - /etc/group:/etc/group:ro

在我的docker-compose.yml和

代码语言:javascript
复制
docker compose -f commands/dev/docker-compose.yml run \
    --service-ports \
    --user $(id -u) \
    develop \
    bash

因此,当我启动码头容器时,我的用户与本地计算机是同一个用户。但是,这会破坏我在Docker容器中的SSH设置:

代码语言:javascript
复制
useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo ubuntu
echo 'ubuntu:ubuntu' | chpasswd
# passwd -d ubuntu

apt install -y --no-install-recommends openssh-server vim-tiny sudo

# See: https://stackoverflow.com/questions/22886470/start-sshd-automatically-with-docker-container
sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
mkdir /var/run/sshd
bash -c 'install -m755 <(printf "#!/bin/sh\nexit 0") /usr/sbin/policy-rc.d'
ex +'%s/^#\zeListenAddress/\1/g' -scwq /etc/ssh/sshd_config
ex +'%s/^#\zeHostKey .*ssh_host_.*_key/\1/g' -scwq /etc/ssh/sshd_config
RUNLEVEL=1 dpkg-reconfigure openssh-server
ssh-keygen -A -v
update-rc.d ssh defaults

# Configure sudo
ex +"%s/^%sudo.*$/%sudo ALL=(ALL:ALL) NOPASSWD:ALL/g" -scwq! /etc/sudoers

这里,我创建了一个名为ubuntu的用户,其密码为ubuntu,用于SSH。这使我可以在ubuntu@localhost中使用ubuntu密码。

问题是,通过将/etc/passwd文件挂载到我的容器中,我删除了容器中的ubuntu用户。这意味着当我尝试使用ssh -p 9002 ubuntu@localhost进行ssh时,身份验证失败(我将容器中的端口22绑定到主机上)。

有人有解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-10-04 23:52:50

这是第一个答案。

我可以用:

代码语言:javascript
复制
useradd -rm -d /home/yourusername -s /bin/bash -g root -G sudo yourusername

而不是

代码语言:javascript
复制
useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo ubuntu
echo 'ubuntu:ubuntu' | chpasswd

然后,我:

  1. 使用:

在容器中运行ssh服务器。

代码语言:javascript
复制
su root
/usr/sbin/sshd -D -o ListenAddress=0.0.0.0 -o PermitRootLogin=yes

  1. ​

我可以将ssh作为root (使用根密码" root ",我在Dockerfile中使用RUN echo 'root:root' | chpasswd设置)进入容器。

然后,我可以做su yourusername,以切换我的用户。虽然这是可行的,但这是相当恼人的,因为我需要烘焙用户名到Docker容器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73954495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档