docker容器作为具有现有公钥的ssh隧道并跳过密码

时间:2019-12-20 09:33:31

标签: docker ssh

我正在尝试配置一个docker容器,该容器用作具有现有authorized_keys的ssh隧道/代理。

密钥有一个密码短语,当尝试连接时会要求它。在具有相同authorized_keys文件的任何其他主机上,都不会要求我输入密码短语。

尽管在/ etc / ssh / ssh_config中将严格的主机检查设置为“否”,但我还会收到消息“无法建立主机的真实性……”。

Dockerfile:

FROM ubuntu:latest

RUN apt-get update -y

RUN apt-get install -y nano \
    iputils-ping \
    ssh \
    sudo \
    openssh-server \
    telnet \
    net-tools \
    iptables \
    iproute2

RUN mkdir /var/run/sshd

# 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

RUN \
    groupadd -g 999 awx && useradd -u 999 -g awx -G sudo -m -s /bin/bash awx-user && \
    sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' && \
    echo "awx-user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
    echo "Customized the sudoers file for passwordless access to the awx-user user!" && \
    echo "awx-user user:";  su - awx-user -c id

RUN mkdir -p /home/awx-user/.ssh

COPY awx_id_rsa.pub /home/awx-user/.ssh/authorized_keys
COPY ssh_config /etc/ssh/ssh_config

RUN sed -ri s/#PermitRootLogin.*/PermitRootLogin\ yes/ /etc/ssh/sshd_config && \
    sed -ri 's/#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config

RUN apt-get clean

USER awx-user

RUN sudo chown awx-user:awx /home/awx-user/.ssh && \
    sudo chown awx-user:awx /home/awx-user/.ssh/authorized_keys && \
    sudo chmod 700 /home/awx-user/.ssh && \
    sudo chmod 600 /home/awx-user/.ssh/authorized_keys

RUN mkdir /home/awx-user/motionpro && \
    mkdir /home/awx-user/motionpro/app

COPY MotionPro_Linux_Ubuntu_x64_v1.2.5.sh /home/awx-user/motionpro/MotionPro_Linux_Ubuntu_x64_v1.2.5.sh

RUN sudo chmod +x /home/awx-user/motionpro/MotionPro_Linux_Ubuntu_x64_v1.2.5.sh && \
    printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local && \
    sudo chmod +x /etc/rc.local

WORKDIR /home/awx-user

EXPOSE 22

Docker运行:

docker run --restart always --user awx-user --hostname motionpro --name motionpro --privileged -p 2201:22 --device /dev/net/tun --cap-add NET_ADMIN --sysctl net.ipv6.conf.all.disable_ipv6=0 -t -d motionpro /bin/bash -c "sudo ./motionpro/MotionPro_Linux_Ubuntu_x64_v1.2.5.sh --target /home/awx-user/motionpro/app > /dev/null && sudo /usr/sbin/sshd -Ddd && bash"

如何配置图像/容器以像在普通主机上一样接受公钥?

1 个答案:

答案 0 :(得分:-1)

几天后,另一个人靠我自己解决了...

工作正常。在同一主机上使用Ansible Tower(AW​​X)和容器vpn代理时,不是这样。

新问题。关闭。