node is hostname

This commit is contained in:
Yann Autissier
2022-11-22 22:49:44 +00:00
parent 61ab6f67af
commit 9697288134
24 changed files with 172 additions and 45 deletions
+4 -1
View File
@@ -26,9 +26,12 @@ RUN cp /usr/share/doc/libpam-script/examples/logscript /usr/share/libpam-script
WORKDIR /app
COPY ${DOCKER_BUILD_DIR}/*.sh /app/
ARG SSH_PORT=22
CMD []
ENTRYPOINT ["/app/run.sh"]
HEALTHCHECK CMD timeout 1 bash -c "</dev/tcp/localhost/22" 2>/dev/null
EXPOSE ${SSH_PORT:-22}
RUN echo "${SSH_PORT}" > /app/.ssh_port
HEALTHCHECK CMD timeout 1 bash -c "</dev/tcp/localhost/$(cat /app/.ssh_port 2>/dev/null)" 2>/dev/null
FROM dist as master
ARG DOCKER_BUILD_DIR
+25
View File
@@ -0,0 +1,25 @@
#!/bin/sh
[ -n "${DEBUG}" ] && set -x
set -eu
user=${1:-${USER}}
domain=${USER/*@}
[ -f "/home/${user}/.ssh/authorized_keys" ] \
&& authorized_keys=$(cat "/home/${user}/.ssh/authorized_keys" 2>/dev/null)
if [ -n "${authorized_keys:-}" ]; then
echo "${authorized_keys:-}"
elif [ -n "${SSH_AUTHORIZED_KEYS:-}" ]; then
for host in ${SSH_AUTHORIZED_KEYS:-}; do
wget -qO - "${host}" 2>/dev/null && break
done
elif [ -n "${user}" ]; then
# if no domain
if [ "${domain}" = "${user}" ]; then
for host in ${SSH_PUBLIC_HOSTS:-}; do
wget -qO - "https://${host}/${user}.keys" 2>/dev/null && break
done
else
exit 1
fi
fi
+2 -4
View File
@@ -10,9 +10,7 @@ if [ ! -f /app/.setup_done ]; then
/app/setup_timezone.sh
fi
/app/setup_ecryptfs.sh /dev/shm
# /shared encryption will not survive on restart
/app/setup_ecryptfs.sh /shared
/app/setup_ecryptfs.sh /dev/shm &
/app/setup_users.sh
## Start-up our services manually (since Docker container will not invoke all init scripts).
@@ -50,6 +48,6 @@ if [ $# -eq 0 ]; then
PID=$! && wait
else
# WARNING: cleanup is not called
exec /bin/bash -c "set -e && $*"
exec su ${USER:-root} /bin/bash -c "set -e && $*"
fi
cleanup
+1
View File
@@ -11,6 +11,7 @@ sed -i "s/^#\?PermitUserEnvironment.*/PermitUserEnvironment no/g" /etc/ssh/sshd_
sed -i "s/^#\?PrintLastLog.*/PrintLastLog yes/g" /etc/ssh/sshd_config
sed -i "s/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#\?X11Forwarding.*/X11Forwarding no/g" /etc/ssh/sshd_config
sed -i "s/^#\?Port.*/Port ${SSH_PORT:-22}/g" /etc/ssh/sshd_config
cat >> /etc/ssh/sshd_config <<EOF
Match group x2gouser
+5 -5
View File
@@ -2,7 +2,7 @@
[ -n "${DEBUG}" ] && set -x
set -eu
for user in ${USERS:-${USERNAME}}; do
for user in ${USERS:-${USER:-user}}; do
id "${user}" > /dev/null 2>&1 || useradd -s /bin/bash "${user}"
[ ! -d "/home/${user}" ] \
&& mkdir -p "/home/${user}" \
@@ -15,9 +15,9 @@ for user in ${USERS:-${USERNAME}}; do
done
usermod -a -G x2gouser "${user}"
mkdir -p "/home/${user}/.ssh"
wget -qO "/home/${user}/.ssh/authorized_keys" "https://gitlab.com/${user}.keys" 2>/dev/null \
|| wget -qO "/home/${user}/.ssh/authorized_keys" "https://github.com/${user}.keys" 2>/dev/null \
|| echo "WARNING: Unable to fetch ssh public keys for user ${user}."
keys=$(su "${user}" /app/authorized_keys.sh 2>/dev/null) \
&& echo "${keys}" > "/home/${user}/.ssh/authorized_keys" \
|| echo "WARNING: Unable to fetch authorized keys for ssh user ${user}."
chown "${user}" "/home/${user}/.ssh" "/home/${user}/.ssh/authorized_keys"
done
for sudoer in ${SUDOERS:-}; do
@@ -29,5 +29,5 @@ for ecrypter in ${ECRYPTERS:-}; do
touch "/home/${ecrypter}/.ecryptfs/auto-umount"
chown -R "${ecrypter}" "/home/${ecrypter}/.ecryptfs"
done
ln -s /app/setup_ecryptfs_sshagent.sh /etc/profile.d/
cp /app/setup_ecryptfs_sshagent.sh /etc/profile.d/
mkdir -p /shared && chmod 1777 /shared