Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Docker容器中为远程调试配置Debian SSHD?_Docker_Debian_Sshd - Fatal编程技术网

如何在Docker容器中为远程调试配置Debian SSHD?

如何在Docker容器中为远程调试配置Debian SSHD?,docker,debian,sshd,Docker,Debian,Sshd,我正在尝试设置Docker Debian容器的远程调试,以调试Windows笔记本电脑上的Ruby应用程序 这是引导我走向这一方向的帖子: 我在容器中运行了Ruby应用程序和SSHD,尽管我发现配置SSHD的方法与Ruby映像所基于的Linux发行版不完全兼容 我基于此Docker文档页面上的SSHD配置: 我的图像基于Docker Hub的ruby:2.2图像,它使用Debian 8,而不是上面的SSHD示例中使用的Ubuntu 16.04 我可以获得SSH提示,但无法使用dockerfil

我正在尝试设置Docker Debian容器的远程调试,以调试Windows笔记本电脑上的Ruby应用程序

这是引导我走向这一方向的帖子:

我在容器中运行了Ruby应用程序和SSHD,尽管我发现配置SSHD的方法与Ruby映像所基于的Linux发行版不完全兼容

我基于此Docker文档页面上的SSHD配置:

我的图像基于Docker Hub的ruby:2.2图像,它使用Debian 8,而不是上面的SSHD示例中使用的Ubuntu 16.04

我可以获得SSH提示,但无法使用dockerfile中设置的root用户的屏幕广播密码登录

我对任何有效的解决方案都持开放态度,无论是正确启用root登录还是添加具有正确权限的新用户以允许远程调试。我只是好奇,在Debian环境中,哪条路最直接。如果它正在创建一个新用户,他们需要什么权限

另外,为了明确起见,我将此视为一次试运行,并且当我为开发之外的任何上下文部署应用程序时,显然会确保以某种方式去除SSHD功能

提前感谢你的帮助

这是我当前的dockerfile

FROM ruby:2.2
RUN apt-get update && apt-get install -y \
    build-essential \
    libpq-dev \
    nodejs \
    openssh-server

RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

RUN mkdir /MyApp
WORKDIR /MyApp
ADD Gemfile /MyApp/Gemfile
ADD Gemfile.lock /MyApp/Gemfile.lock
RUN bundle install
ADD . /MyApp
这是我的docker-compose.yml

version: '2'
services:
  web:
    build: .
    command: /CivilService/docker-dev-start.sh
    volumes:
      - .:/CivilService
    ports:
      - "3000:3000"
      - "3022:22"
docker-dev-start.sh如下所示

#!/bin/bash

# start the SSH server for connecting the debugger in development
/usr/sbin/sshd -D &
bundle exec rails s -p 3000 -b '0.0.0.0'

不同发行版的SSH配置可能略有不同,因此替换特定字符串可能不起作用

要涵盖任何类型的
permitrotlogin
字符串,请使用:

RUN sed -i 's/PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config

您的Dockerfile缺少CMD或ENTRYPOINT@user2915097docker-compose.yml在您运行
docker compose up
时应用该命令,将sed更改为
run sed-i的/permitrotlogin.*/permitrotlogin yes/'
@Matt谢谢!成功了!