forked from kubernetes/git-sync
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This requires having a docker image for git-over-ssh.
- Loading branch information
Showing
6 changed files
with
162 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# Stolen from https://github.com/linuxkit/linuxkit/tree/master/pkg/sshd/ | ||
|
||
FROM alpine AS base | ||
|
||
RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/ | ||
RUN apk add --no-cache --initdb -p /out \ | ||
alpine-baselayout \ | ||
apk-tools \ | ||
busybox \ | ||
ca-certificates \ | ||
git \ | ||
musl \ | ||
openssh-server \ | ||
tini \ | ||
util-linux \ | ||
wireguard-tools \ | ||
&& true | ||
|
||
############### | ||
|
||
FROM scratch | ||
|
||
ENTRYPOINT [] | ||
WORKDIR / | ||
|
||
COPY --from=base /out/ / | ||
|
||
RUN mkdir -p /etc/ssh && rm /etc/motd | ||
COPY sshd_config /etc/ssh/ | ||
COPY sshd.sh / | ||
|
||
# Callers should mount a .ssh directory here. Our sshd.sh will copy it and | ||
# manage permissions. | ||
VOLUME /dot_ssh | ||
|
||
# Callers can SSH as user "test" | ||
RUN echo "test:x:65533:65533::/home/test:/usr/bin/git-shell" >> /etc/passwd | ||
|
||
CMD ["/sbin/tini", "/sshd.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# An SSHD for tests git-over-ssh | ||
|
||
DO NOT USE THIS FOR ANYTHING BUT TESTING GIT OVER SSH!!! | ||
|
||
## How to use it | ||
|
||
Build yourself a test image. We use example.com so you can't accidentally push | ||
it. | ||
|
||
``` | ||
$ docker build -t example.com/test/test-sshd . | ||
...lots of output... | ||
Successfully tagged example.com/test/test-sshd:latest | ||
``` | ||
|
||
Generate keys for a fake user named "test". | ||
|
||
``` | ||
$ mkdir -p dot_ssh | ||
$ ssh-keygen -f dot_ssh/id_test -P "" | ||
Generating public/private rsa key pair. | ||
Your identification has been saved in dot_ssh/id_test. | ||
Your public key has been saved in dot_ssh/id_test.pub. | ||
...lots of output... | ||
$ cat dot_ssh/id_test.pub > dot_ssh/authorized_keys | ||
``` | ||
|
||
Run it. | ||
|
||
``` | ||
$ docker run -d -v $(pwd)/dot_ssh:/dot_ssh:ro example.com/test/test-sshd | ||
6d05b4111b03c66907031e3cd7587763f0e4fab6c50fac33c4a8284732b448ae | ||
``` | ||
|
||
Find your IP. | ||
|
||
``` | ||
$ docker inspect 6d05b4111b03c66907031e3cd7587763f0e4fab6c50fac33c4a8284732b448ae | jq -r .[0].NetworkSettings.IPAddress | ||
192.168.1.2 | ||
``` | ||
|
||
SSH to it. | ||
|
||
``` | ||
$ ssh -i dot_ssh/id_test -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] | ||
Warning: Permanently added '192.168.9.2' (ECDSA) to the list of known hosts. | ||
fatal: Interactive git shell is not enabled. | ||
hint: ~/git-shell-commands should exist and have read and execute access. | ||
Connection to 192.168.9.2 closed. | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/bin/sh | ||
|
||
KEYS=$(find /etc/ssh -name 'ssh_host_*_key') | ||
[ -z "$KEYS" ] && ssh-keygen -A >/dev/null 2>/dev/null | ||
|
||
# Copy creds for the test user, so we don't have to bake them into the image | ||
# and so users don't have to manage permissions. | ||
mkdir -p /home/test/.ssh | ||
cp -a /dot_ssh/* /home/test/.ssh | ||
chown -R test /home/test/.ssh | ||
chmod 0700 /home/test/.ssh | ||
chmod 0600 /home/test/.ssh/* | ||
|
||
exec /usr/sbin/sshd -D -e |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# This is the sshd server system-wide configuration file. See | ||
# sshd_config(5) for more information. | ||
|
||
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 | ||
# but this is overridden so installations will only check .ssh/authorized_keys | ||
AuthorizedKeysFile .ssh/authorized_keys | ||
|
||
# To disable tunneled clear text passwords, change to no here! | ||
PasswordAuthentication no | ||
|
||
# Change to no to disable s/key passwords | ||
ChallengeResponseAuthentication no |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters