mirror of
https://github.com/aljazceru/addons.git
synced 2025-12-18 21:54:20 +01:00
SSH addon (#11)
This commit is contained in:
15
ssh/Dockerfile
Normal file
15
ssh/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM %%BASE_IMAGE%%
|
||||||
|
|
||||||
|
# Add version
|
||||||
|
ENV VERSION %%VERSION%%
|
||||||
|
ENV LANG C.UTF-8
|
||||||
|
|
||||||
|
# Setup base
|
||||||
|
RUN apk add --no-cache jq openssh vim
|
||||||
|
|
||||||
|
# Copy data
|
||||||
|
COPY run.sh /
|
||||||
|
|
||||||
|
RUN chmod a+x /run.sh
|
||||||
|
|
||||||
|
CMD [ "/run.sh" ]
|
||||||
9
ssh/README.md
Normal file
9
ssh/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# SSH server
|
||||||
|
Provide a openssh server. You can access to:
|
||||||
|
- /config: HomeAssistant config
|
||||||
|
- /addons: Custom addon folder
|
||||||
|
- /ssl: Store ssh key files for HassIO
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
- `authorized_keys`: A array that ever element is a authorized key
|
||||||
18
ssh/config.json
Normal file
18
ssh/config.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "SSH server",
|
||||||
|
"version": "0.1",
|
||||||
|
"slug": "ssh",
|
||||||
|
"description": "OpenSSH is the premier connectivity tool for remote login with the SSH protocol.",
|
||||||
|
"startup": "before",
|
||||||
|
"boot": "auto",
|
||||||
|
"ports": {
|
||||||
|
"22/tcp": 22,
|
||||||
|
},
|
||||||
|
"map": ["config", "ssl", "addons"],
|
||||||
|
"options": {
|
||||||
|
"authorized_keys": [null],
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"authorized_keys": ["str"],
|
||||||
|
}
|
||||||
|
}
|
||||||
29
ssh/run.sh
Normal file
29
ssh/run.sh
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CONFIG_PATH=/data/options.json
|
||||||
|
KEYS_PATH=/data/host_keys
|
||||||
|
|
||||||
|
AUTHORIZED_KEYS=$(jq --raw-output ".authorized_keys[]" $CONFIG_PATH)
|
||||||
|
|
||||||
|
# Init defaults config
|
||||||
|
sed -i s/#PermitRootLogin.*/PermitRootLogin\ yes/ /etc/ssh/sshd_config
|
||||||
|
|
||||||
|
# Generate authorized_keys file
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
for line in $AUTHORIZED_KEYS; do
|
||||||
|
echo "$line" >> ~/.ssh/authorized_keys
|
||||||
|
done
|
||||||
|
chmod 600 ~/.ssh/authorized_keys
|
||||||
|
|
||||||
|
# Generate host keys
|
||||||
|
if [ ! -d "$KEYS_PATH" ]; then
|
||||||
|
mkdir -p "$KEYS_PATH"
|
||||||
|
ssh-keygen -A
|
||||||
|
cp -fp /etc/ssh/ssh_host* "$KEYS_PATH/"
|
||||||
|
else
|
||||||
|
cp -fp "$KEYS_PATH/*" /etc/ssh/
|
||||||
|
fi
|
||||||
|
|
||||||
|
# start server
|
||||||
|
exec sshd -D -f /etc/sshd_config < /dev/null
|
||||||
Reference in New Issue
Block a user