# Use the latest Ubuntu image FROM ubuntu:focal # Set environment variable to avoid interactive prompts ENV DEBIAN_FRONTEND=noninteractive # Set timezone to your desired timezone (e.g., "America/New_York") RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime && \ echo "India/Kolkata" > /etc/timezone # Update package list, install required packages, and clean up RUN apt-get update && \ apt-get install -y \ sudo\ bash \ expect\ passwd \ python3 \ net-tools\ python3-pip\ python3-venv\ openssh-server &&\ apt clean && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # Create the 'admin' user with home directory and password, and 'administrator' group #RUN useradd -m -s /bin/bash admin && \ # echo 'admin:password' | chpasswd && \ # useradd -m -s /bin/bash ubuntu && \ # echo 'ubuntu:password' | chpasswd && \ # groupadd administrator && \ # usermod -aG administrator,sudo admin && \ # usermod -aG administrator,sudo ubuntu # Create the 'admin' and 'ubuntu' users with home directories and passwords, and add them to the 'sudo' group #RUN groupadd -r admin && useradd -r -g users admin && \ # echo 'admin:password' | chpasswd && \ # echo 'ubuntu:password' | chpasswd && \ RUN useradd -m -s /bin/bash admin && \ usermod -aG sudo admin && \ echo "admin:password" | sudo chpasswd && \ echo "admin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers #RUN id -u ubuntu &>/dev/null || useradd -m -s /bin/bash ubuntu && \ # usermod -aG sudo ubuntu && \ # echo "ubuntu:password" | chpasswd && \ # echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers #RUN echo "password" | su - ubuntu -c "whoami" # Copy the application code to the container COPY . /app # Create necessary directories and set permissions RUN mkdir -p /var/run/sshd /app /app/users/sshs /app/ssh && \ chmod -R 777 /app # touch /etc/sudoers # Grant full sudo access to the 'administrator' group RUN sed -i 's/Defaults !requiretty/Defaults requiretty/' /etc/sudoers && \ echo 'admin ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers #RUN echo "%administrator ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # Generate SSH host keys RUN ssh-keygen -A # Secure SSH configuration RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config && \ sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \ sed -i 's/#ChallengeResponseAuthentication yes/ChallengeResponseAuthentication no/' /etc/ssh/sshd_config && \ sed -i 's/#UsePAM yes/UsePAM no/' /etc/ssh/sshd_config && \ sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config && \ echo "AllowUsers admin" >> /etc/ssh/sshd_config # Copy SSH keys to /app/ssh and set permissions RUN cp -r /etc/ssh/* /app/ssh && \ chmod -R 777 /etc/ssh/* /app/ssh/* && \ touch /app/ssh/ssh_known_hosts && \ chmod 777 /app/ssh/ssh_known_hosts # List contents of /etc/ssh and /app/ssh RUN ls -l /etc/ssh/ && \ ls -l /app/ssh/ # Create administrator group and admin user with full permissions #RUN groupadd -f administrator && \ # id -u admin >/dev/null 2>&1 || useradd -m -s /bin/bash -G administrator,sudo admin && \ # echo 'admin:password' | chpasswd && \ # echo "%administrator ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # Install WebSSH dependencies RUN python3 -m venv /app/WebSSHEnv && \ /app/WebSSHEnv/bin/pip install --no-cache-dir --upgrade pip && \ /app/WebSSHEnv/bin/pip install --no-cache-dir webssh && \ /app/WebSSHEnv/bin/pip list # Change ownership of /home/admin directory #RUN chown -R admin:admin /home/admin # Set working directory #WORKDIR /app # Expose necessary ports EXPOSE 7860 2222 # Switch to 'admin' user and set working directory #WORKDIR /home/admin # Change ownership of /home/admin directory #RUN chown -R admin:admin /home/admin #RUN cat /etc/passwd && \ # cat /etc/group && \ # cat /etc/sudoers && \ # cat /etc/shadow RUN chmod -R 777 /app /home #USER admin # Default command to keep the container running CMD ["/app/start.sh"]