X-Git-Url: https://git.madduck.net/etc/ssh.git/blobdiff_plain/f285db605bb9cc1afa7a164160aa90de1b892619..5a8078d8d93a56f3dfb421490cd4326e45ea5450:/.ssh/Makefile diff --git a/.ssh/Makefile b/.ssh/Makefile index 017a6bb..2ba6e4a 100644 --- a/.ssh/Makefile +++ b/.ssh/Makefile @@ -1,27 +1,78 @@ all: known_hosts authorized_keys config + @chmod -R og= . .PHONY: all known_hosts: $(wildcard known_hosts.d/*) touch $@ for f in $^; do \ - echo; \ echo "### from $$f:"; \ cat $$f; \ - done >> $@ + echo; \ + done > $@ authorized_keys: $(wildcard authorized_keys.d/*) touch $@ for f in $^; do \ - echo; \ echo "### from $$f:"; \ cat $$f; \ - done >> $@ + echo; \ + done > $@ + +ifeq ($(strip $(wildcard config.local)),) +LOCAL_CONFIG=/dev/null +else +LOCAL_CONFIG=config.local +endif -config: config.in - cp $< $@ - case "$(ssh -V)" in \ - OpenSSH_4.3*) \ - sed -ri -e 's,^.+\.+$$,##UNSUPPORTED##&,' \ - -e 's,^.+\.+$$,##UNSUPPORTED##&,' $@ \ +SSH_VERSION = $(shell ssh -V 2>&1) +config: $(LOCAL_CONFIG) config.in + cat $^ > $@ + case "$(SSH_VERSION)" in \ + (OpenSSH_7.[12]*) \ + sed -ri -e 's,ProxyJump ([-.[:alnum:]]+),ProxyCommand ssh \1 nc -q0 %h %p,' $@ \ + ;; \ + (OpenSSH_6.*) \ + sed -ri -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bIgnoreUnknown\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bUpdateHostKeys\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^Match host ,Host ,' \ + $@; \ + sed -ri -e 's,ProxyJump ([-.[:alnum:]]+),ProxyCommand ssh \1 nc -q0 %h %p,' $@ \ + ;; \ + (OpenSSH_5.*) \ + sed -ri -e 's,^.+\bControlPersist\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bIPQoS\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \ + $@ \ + ;; \ + (OpenSSH_4.7*) \ + sed -ri -e 's,^.+\bVisualHostKey\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bControlPersist\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bIPQoS\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \ + $@ \ + ;; \ + (OpenSSH_4.3*) \ + sed -ri -e 's,^.+\bExitOnForwardFailure\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bMACs\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^(.+ControlPath ~/.var/ssh/ssh_control_)%l_(.+),\1\2,' \ + -e 's,^.+\bVisualHostKey\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bControlPersist\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bIPQoS\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \ + $@ \ + ;; \ + (3.9*) \ + sed -ri -e 's,^.+\bExitOnForwardFailure\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bMACs\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bHashKnownHosts\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bControl(Master|Path|Persist)\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bIPQoS\b.+$$,##UNSUPPORTED##&,' \ + -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \ + $@ \ ;; \ + esac; \ + case "$$HOSTNAME" in \ + (fishbowl) \ + sed -i -re '/^Host fishbowl/,/^[[:space:]]*ProxyCommand/s/ProxyCommand.*/Host localhost/' $@; \ esac