Spaces:
Paused
Paused
| # 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"] | |