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,^.+\<ExitOnForwardFailure\>.+$$,##UNSUPPORTED##&,' \
- -e 's,^.+\<MACs\>.+$$,##UNSUPPORTED##&,' $@ \
+SSH_VERSION = $(shell ssh -V 2>&1)
+config: $(LOCAL_CONFIG) config.in
+ cat $^ > $@
+ case "$(SSH_VERSION)" in \
+ (OpenSSH_6.*) \
+ sed -ri -e 's,^.+\bCanonical.+$$,##UNSUPPORTED##&,' \
+ -e 's,^.+\bIgnoreUnknown\b.+$$,##UNSUPPORTED##&,' \
+ -e 's,^.+\bUpdateHostKeys\b.+$$,##UNSUPPORTED##&,' \
+ -e 's,^Match host ,Host ,' \
+ $@ \
+ ;; \
+ (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