| #!/bin/sh |
| # |
| # Starts dropbear sshd. |
| # |
| |
| # Make sure this load is used for test |
| [ -f /tmp/DEBUG ] || exit 0 |
| |
| start() { |
| # Make sure dropbear directory exists. |
| # /etc/dropbear links to /tmp/dropbear, which we can write to. |
| if mkdir -p /config/dropbear; then |
| ln -sf /config/dropbear /tmp |
| else |
| mkdir -p /tmp/dropbear |
| fi |
| |
| # Check for the dropbear keys |
| umask 077 |
| K1=/etc/dropbear/dropbear_rsa_host_key |
| K2=/etc/dropbear/dropbear_dss_host_key |
| if ! dropbearkey -y -f $K1 >/dev/null 2>&1; then |
| [ -e "$K1" ] && echo "BUG: $K1 existed, but invalid!" |
| rm -f $K1 |
| dropbearkey -t rsa -f $K1 |
| fi |
| if ! dropbearkey -y -f $K2 >/dev/null 2>&1; then |
| [ -e "$K2" ] && echo "BUG: $K2 existed, but invalid!" |
| rm -f $K2 |
| dropbearkey -t dss -f $K2 |
| fi |
| |
| babysit 60 dropbear -s -F -E 2>&1 | logos dropbear & |
| } |
| stop() { |
| # we could use pkill dropbear here, but then it would kill running |
| # ssh sessions, which is not what we want. So use the pidfile |
| # instead. But we do want to make sure the babysitter stays dead. |
| pkillwait -f 'babysit [0-9]+ dropbear' |
| start-stop-daemon -K -q -p /var/run/dropbear.pid |
| } |
| restart() { |
| stop |
| start |
| } |
| |
| case "$1" in |
| start) |
| start |
| ;; |
| stop) |
| stop |
| ;; |
| restart|reload) |
| restart |
| ;; |
| *) |
| echo "Usage: $0 {start|stop|restart}" |
| exit 1 |
| esac |