Skip to content

Commit

Permalink
Merge pull request #3 from aoudiamoncef/dev
Browse files Browse the repository at this point in the history
feat: upgrade to Ubuntu 24.04
  • Loading branch information
aoudiamoncef authored Jun 19, 2024
2 parents 45e0faa + e50fdb2 commit 8c2bd96
Show file tree
Hide file tree
Showing 7 changed files with 119 additions and 40 deletions.
63 changes: 63 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Docker Image Deployment

on:
push:
branches:
- 'main'

jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: |
aoudiamoncef/ubuntu-sshd
ghcr.io/${{ github.repository }}/ubuntu-sshd
- name: Build and push to Docker Hub
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: aoudiamoncef/ubuntu-sshd:latest
labels: ${{ steps.meta.outputs.labels }}

- name: Build and push to GitHub Container Registry
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}/ubuntu-sshd:latest
labels: ${{ steps.meta.outputs.labels }}

- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
subject-name: ghcr.io/${{ github.repository }}/ubuntu-sshd
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true
35 changes: 35 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Docker Image CI

on:
pull_request:
branches:
- 'main'

jobs:
build-check:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: |
aoudiamoncef/ubuntu-sshd
ghcr.io/${{ github.repository }}/ubuntu-sshd
- name: Build Docker image
uses: docker/build-push-action@v5
with:
context: .
push: false
tags: aoudiamoncef/ubuntu-sshd:pr-${{ github.event.number }}
labels: ${{ steps.meta.outputs.labels }}
29 changes: 0 additions & 29 deletions .github/workflows/ci_cd.yml

This file was deleted.

2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

.DS_Store
14 changes: 7 additions & 7 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Use an official Ubuntu base image
FROM ubuntu:22.04
FROM ubuntu:24.04

# Set environment variables to avoid interactive prompts during installation
ENV DEBIAN_FRONTEND=noninteractive
Expand All @@ -8,19 +8,16 @@ ENV PASSWORD=changeme

# Install OpenSSH server and clean up
RUN apt-get update \
&& apt-get install -y openssh-server iputils-ping telnet iproute2\
&& apt-get install -y openssh-server iputils-ping telnet iproute2 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Create the privilege separation directory and fix permissions
RUN mkdir -p /run/sshd \
&& chmod 755 /run/sshd

# Expose SSH port
EXPOSE 22

# Create the non-root user with the ability to set a password and authorized keys using environment variables
RUN useradd -ms /bin/bash $SSH_USERNAME
# Check if the user exists before trying to create it
RUN if ! id -u $SSH_USERNAME > /dev/null 2>&1; then useradd -ms /bin/bash $SSH_USERNAME; fi

# Set up SSH configuration
RUN mkdir -p /home/$SSH_USERNAME/.ssh && chown $SSH_USERNAME:$SSH_USERNAME /home/$SSH_USERNAME/.ssh \
Expand All @@ -31,5 +28,8 @@ RUN mkdir -p /home/$SSH_USERNAME/.ssh && chown $SSH_USERNAME:$SSH_USERNAME /home
COPY configure-ssh-user.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/configure-ssh-user.sh

# Expose SSH port
EXPOSE 22

# Start SSH server
CMD ["/usr/local/bin/configure-ssh-user.sh"]
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[![Docker Pulls](https://img.shields.io/docker/pulls/aoudiamoncef/ubuntu-sshd.svg)](https://hub.docker.com/r/aoudiamoncef/ubuntu-sshd)
[![Maintenance](https://img.shields.io/badge/Maintained-Yes-green.svg)](https://github.com/aoudiamoncef/ubuntu-sshd)

This Docker image provides an Ubuntu 22.04 base with SSH server enabled. It allows you to easily create SSH-accessible containers via SSH keys or with a default username and password.
This Docker image provides an Ubuntu 24.04 base with SSH server enabled. It allows you to easily create SSH-accessible containers via SSH keys or with a default username and password.

## Usage

Expand Down
14 changes: 11 additions & 3 deletions configure-ssh-user.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,23 @@
: ${PASSWORD:=changeme}

# Create the user with the provided username and set the password
useradd -ms /bin/bash $SSH_USERNAME
echo "$SSH_USERNAME:$PASSWORD" | chpasswd
if id "$SSH_USERNAME" &>/dev/null; then
echo "User $SSH_USERNAME already exists"
else
useradd -ms /bin/bash "$SSH_USERNAME"
echo "$SSH_USERNAME:$PASSWORD" | chpasswd
echo "User $SSH_USERNAME created with the provided password"
fi

# Set the authorized keys from the AUTHORIZED_KEYS environment variable (if provided)
if [ -n "$AUTHORIZED_KEYS" ]; then
mkdir -p /home/$SSH_USERNAME/.ssh
echo "$AUTHORIZED_KEYS" > /home/$SSH_USERNAME/.ssh/authorized_keys
chown -R $SSH_USERNAME:$SSH_USERNAME /home/$SSH_USERNAME/.ssh
chmod 700 /home/$SSH_USERNAME/.ssh
chmod 600 /home/$SSH_USERNAME/.ssh/authorized_keys
echo "Authorized keys set for user $SSH_USERNAME"
fi

# Start the SSH server
/usr/sbin/sshd -D
exec /usr/sbin/sshd -D

0 comments on commit 8c2bd96

Please sign in to comment.