diff options
Diffstat (limited to 'meta/recipes-connectivity/openssh/openssh/sshd_check_keys')
-rw-r--r-- | meta/recipes-connectivity/openssh/openssh/sshd_check_keys | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/meta/recipes-connectivity/openssh/openssh/sshd_check_keys b/meta/recipes-connectivity/openssh/openssh/sshd_check_keys new file mode 100644 index 0000000000..f5bba53ca3 --- /dev/null +++ b/meta/recipes-connectivity/openssh/openssh/sshd_check_keys | |||
@@ -0,0 +1,64 @@ | |||
1 | #! /bin/sh | ||
2 | |||
3 | # /etc/default/ssh may set SYSCONFDIR and SSHD_OPTS | ||
4 | if test -f /etc/default/ssh; then | ||
5 | . /etc/default/ssh | ||
6 | fi | ||
7 | |||
8 | [ -z "$SYSCONFDIR" ] && SYSCONFDIR=/etc/ssh | ||
9 | mkdir -p $SYSCONFDIR | ||
10 | |||
11 | # parse sshd options | ||
12 | set -- ${SSHD_OPTS} -- | ||
13 | sshd_config=/etc/ssh/sshd_config | ||
14 | while true ; do | ||
15 | case "$1" in | ||
16 | -f*) if [ "$1" = "-f" ] ; then | ||
17 | sshd_config="$2" | ||
18 | shift | ||
19 | else | ||
20 | sshd_config="${1#-f}" | ||
21 | fi | ||
22 | shift | ||
23 | ;; | ||
24 | --) shift; break;; | ||
25 | *) shift;; | ||
26 | esac | ||
27 | done | ||
28 | |||
29 | # parse location of keys | ||
30 | HOST_KEY_RSA=$(grep ^HostKey "${sshd_config}" | grep _rsa_ | tail -1 | awk ' { print $2 } ') | ||
31 | [ -z "${HOST_KEY_RSA}" ] && HOST_KEY_RSA=$(grep HostKey "${sshd_config}" | grep _rsa_ | tail -1 | awk ' { print $2 } ') | ||
32 | [ -z "${HOST_KEY_RSA}" ] && HOST_KEY_RSA=$SYSCONFDIR/ssh_host_rsa_key | ||
33 | HOST_KEY_DSA=$(grep ^HostKey "${sshd_config}" | grep _dsa_ | tail -1 | awk ' { print $2 } ') | ||
34 | [ -z "${HOST_KEY_DSA}" ] && HOST_KEY_DSA=$(grep HostKey "${sshd_config}" | grep _dsa_ | tail -1 | awk ' { print $2 } ') | ||
35 | [ -z "${HOST_KEY_DSA}" ] && HOST_KEY_DSA=$SYSCONFDIR/ssh_host_dsa_key | ||
36 | HOST_KEY_ECDSA=$(grep ^HostKey "${sshd_config}" | grep _ecdsa_ | tail -1 | awk ' { print $2 } ') | ||
37 | [ -z "${HOST_KEY_ECDSA}" ] && HOST_KEY_ECDSA=$(grep HostKey "${sshd_config}" | grep _ecdsa_ | tail -1 | awk ' { print $2 } ') | ||
38 | [ -z "${HOST_KEY_ECDSA}" ] && HOST_KEY_ECDSA=$SYSCONFDIR/ssh_host_ecdsa_key | ||
39 | HOST_KEY_ED25519=$(grep ^HostKey "${sshd_config}" | grep _ed25519_ | tail -1 | awk ' { print $2 } ') | ||
40 | [ -z "${HOST_KEY_ED25519}" ] && HOST_KEY_ED25519=$(grep HostKey "${sshd_config}" | grep _ed25519_ | tail -1 | awk ' { print $2 } ') | ||
41 | [ -z "${HOST_KEY_ED25519}" ] && HOST_KEY_ED25519=$SYSCONFDIR/ssh_host_ed25519_key | ||
42 | |||
43 | # create keys if necessary | ||
44 | if [ ! -f $HOST_KEY_RSA ]; then | ||
45 | echo " generating ssh RSA key..." | ||
46 | mkdir -p $(dirname $HOST_KEY_RSA) | ||
47 | ssh-keygen -q -f $HOST_KEY_RSA -N '' -t rsa | ||
48 | fi | ||
49 | if [ ! -f $HOST_KEY_ECDSA ]; then | ||
50 | echo " generating ssh ECDSA key..." | ||
51 | mkdir -p $(dirname $HOST_KEY_ECDSA) | ||
52 | ssh-keygen -q -f $HOST_KEY_ECDSA -N '' -t ecdsa | ||
53 | fi | ||
54 | if [ ! -f $HOST_KEY_DSA ]; then | ||
55 | echo " generating ssh DSA key..." | ||
56 | mkdir -p $(dirname $HOST_KEY_DSA) | ||
57 | ssh-keygen -q -f $HOST_KEY_DSA -N '' -t dsa | ||
58 | fi | ||
59 | if [ ! -f $HOST_KEY_ED25519 ]; then | ||
60 | echo " generating ssh ED25519 key..." | ||
61 | mkdir -p $(dirname $HOST_KEY_ED25519) | ||
62 | ssh-keygen -q -f $HOST_KEY_ED25519 -N '' -t ed25519 | ||
63 | fi | ||
64 | |||