33
44# create folders
55mkdir -p \
6- /config/{.ssh,ssh_host_keys, logs/openssh}
6+ /config/{.ssh,logs/openssh,sshd }
77
88USER_NAME=${USER_NAME:-linuxserver.io}
99echo "User name is set to $USER_NAME"
3030USER_PASSWORD=${USER_PASSWORD:-$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c"${1:-8}";echo;)}
3131echo "${USER_NAME}:${USER_PASSWORD}" | chpasswd
3232
33- # symlink out ssh config directory
34- if [[ ! -L /etc/ssh ]]; then
35- if [[ ! -f /config/ssh_host_keys/sshd_config ]]; then
36- sed -i '/#PidFile/c\PidFile \/config\/sshd.pid' /etc/ssh/sshd_config
37- cp -a /etc/ssh/sshd_config /config/ssh_host_keys/
38- fi
39- rm -Rf /etc/ssh
40- ln -s /config/ssh_host_keys /etc/ssh
33+ # Migration
34+ if [[ -f /config/ssh_host_keys/sshd_config ]]; then
35+ mv /config/ssh_host_keys/sshd_config /config/sshd/sshd_config
36+ sed -i 's/Include \/etc\/ssh\/sshd_config.d\/\*.conf/#Include \/etc\/ssh\/sshd_config.d\/\*.conf/' /config/sshd/sshd_config
37+ echo "This file has been moved to /config/sshd/sshd_config" > /config/ssh_host_keys/sshd_config_README
38+ chmod 600 /config/sshd/sshd_config/ssh_host_*_key
39+ chmod 644 /config/sshd/sshd_config/ssh_host_*_key.pub
40+ fi
41+
42+ if [[ ! -f /config/sshd/sshd_config ]]; then
43+ sed -i '/#PidFile/c\PidFile \/config\/sshd.pid' /etc/ssh/sshd_config
44+ sed -i 's/Include \/etc\/ssh\/sshd_config.d\/\*.conf/#Include \/etc\/ssh\/sshd_config.d\/\*.conf/' /etc/ssh/sshd_config
45+ cp -a /etc/ssh/sshd_config /config/sshd/sshd_config
46+ fi
47+
48+ if [[ ! -d /config/ssh_host_keys ]]; then
49+ mkdir -p /config/ssh_host_keys
4150 ssh-keygen -A
51+ cp /etc/ssh/ssh_host_* /config/ssh_host_keys
4252fi
4353
4454# display SSH host public key(s)
@@ -47,32 +57,32 @@ cat /config/ssh_host_keys/ssh_host_*.pub
4757
4858# custom port
4959if [[ -n "${LISTEN_PORT}" ]]; then
50- sed -i "s/^#Port [[:digit:]]\+/Port ${LISTEN_PORT}"/ /etc/ssh /sshd_config
51- sed -i "s/^Port [[:digit:]]\+/Port ${LISTEN_PORT}"/ /etc/ssh /sshd_config
60+ sed -i "s/^#Port [[:digit:]]\+/Port ${LISTEN_PORT}"/ /config/sshd /sshd_config
61+ sed -i "s/^Port [[:digit:]]\+/Port ${LISTEN_PORT}"/ /config/sshd /sshd_config
5262 echo "sshd is listening on port ${LISTEN_PORT}"
5363else
54- sed -i "s/^#Port [[:digit:]]\+/Port 2222"/ /etc/ssh /sshd_config
55- sed -i "s/^Port [[:digit:]]\+/Port 2222"/ /etc/ssh /sshd_config
64+ sed -i "s/^#Port [[:digit:]]\+/Port 2222"/ /config/sshd /sshd_config
65+ sed -i "s/^Port [[:digit:]]\+/Port 2222"/ /config/sshd /sshd_config
5666 echo "sshd is listening on port 2222"
5767fi
5868
5969# password access
6070if [[ "$PASSWORD_ACCESS" == "true" ]]; then
61- sed -i '/^#PasswordAuthentication/c\PasswordAuthentication yes' /etc/ssh /sshd_config
62- sed -i '/^PasswordAuthentication/c\PasswordAuthentication yes' /etc/ssh /sshd_config
71+ sed -i '/^#PasswordAuthentication/c\PasswordAuthentication yes' /config/sshd /sshd_config
72+ sed -i '/^PasswordAuthentication/c\PasswordAuthentication yes' /config/sshd /sshd_config
6373 chown root:"${USER_NAME}" \
6474 /etc/shadow
6575 echo "User/password ssh access is enabled."
6676else
67- sed -i '/^PasswordAuthentication/c\PasswordAuthentication no' /etc/ssh /sshd_config
77+ sed -i '/^PasswordAuthentication/c\PasswordAuthentication no' /config/sshd /sshd_config
6878 chown root:root \
6979 /etc/shadow
7080 echo "User/password ssh access is disabled."
7181fi
7282
7383# set umask for sftp
7484UMASK=${UMASK:-022}
75- sed -i "s|/usr/lib/ssh/sftp-server$|/usr/lib/ssh/sftp-server -u ${UMASK}|g" /etc/ssh /sshd_config
85+ sed -i "s|/usr/lib/ssh/sftp-server$|/usr/lib/ssh/sftp-server -u ${UMASK}|g" /config/sshd /sshd_config
7686
7787# set key auth in file
7888if [[ ! -f /config/.ssh/authorized_keys ]]; then
@@ -133,10 +143,9 @@ chmod 700 \
133143chmod 600 \
134144 /config/.ssh/authorized_keys
135145
136- # ssh_host_keys permissions
137146lsiown -R root:"${USER_NAME}" \
138- /config/ssh_host_keys
147+ /config/sshd
139148chmod 750 \
140- /config/ssh_host_keys
149+ /config/sshd
141150chmod 640 \
142- /config/ssh_host_keys/*
151+ /config/sshd/sshd_config
0 commit comments