init
This commit is contained in:
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
!/Dockerfile
|
||||||
|
!/.gitignore
|
||||||
|
!/entry.sh
|
||||||
|
!/gen.lua
|
||||||
12
Dockerfile
Normal file
12
Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM alpine
|
||||||
|
|
||||||
|
VOLUME [ "/config" ]
|
||||||
|
VOLUME [ "/data" ]
|
||||||
|
EXPOSE 22
|
||||||
|
|
||||||
|
RUN apk add --no-cache openssh lua
|
||||||
|
|
||||||
|
COPY entry.sh gen.lua /
|
||||||
|
RUN chmod +x entry.sh
|
||||||
|
|
||||||
|
CMD [ "/entry.sh" ]
|
||||||
12
entry.sh
Normal file
12
entry.sh
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
lua5.4 gen.lua /config /etc/ssh/sshd_config.d/mappings.conf
|
||||||
|
|
||||||
|
if [ ! -f /data/ssh_host_ecdsa_key ]; then
|
||||||
|
ssh-keygen -A
|
||||||
|
cp /etc/ssh/ssh_host_* /data/
|
||||||
|
else
|
||||||
|
cp /data/* /etc/ssh/
|
||||||
|
fi
|
||||||
|
|
||||||
|
/usr/sbin/sshd -D -E /dev/stderr 2> /dev/stdout
|
||||||
34
gen.lua
Normal file
34
gen.lua
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
local conf, out = ...;
|
||||||
|
local f = assert(io.open(out, "w"));
|
||||||
|
local passwd = assert(io.open("/etc/passwd", "a"));
|
||||||
|
local shadow = assert(io.open("/etc/shadow", "a"));
|
||||||
|
|
||||||
|
local i = 0;
|
||||||
|
local uid = 1100;
|
||||||
|
|
||||||
|
for l in io.lines(conf) do
|
||||||
|
i = i + 1;
|
||||||
|
|
||||||
|
l = l:match "^(.-)#" or l;
|
||||||
|
l = l:match "^%s*(.-)%s*$";
|
||||||
|
|
||||||
|
if l ~= "" then
|
||||||
|
local user, params = l:match "^([%a_]+)%s+=%s+(.*)$";
|
||||||
|
if not user then
|
||||||
|
error(conf .. ":" .. i .. ": invalid syntax", 0);
|
||||||
|
end
|
||||||
|
|
||||||
|
passwd:write(user, ":x:", uid, ":", uid, "::/dev/null:/bin/sh\n");
|
||||||
|
shadow:write(user, ":::0:::::\n");
|
||||||
|
|
||||||
|
f:write("Match User ", user);
|
||||||
|
f:write("\n\tForceCommand ssh -A ", params);
|
||||||
|
f:write("\n\tPubkeyAuthentication no");
|
||||||
|
f:write("\n\tPasswordAuthentication yes");
|
||||||
|
f:write("\n\tPermitEmptyPasswords yes");
|
||||||
|
f:write("\n\tAllowAgentForwarding yes\n");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
passwd:close();
|
||||||
|
f:close();
|
||||||
Reference in New Issue
Block a user