diff options
Diffstat (limited to 'debian/openssh-server.config')
-rw-r--r-- | debian/openssh-server.config | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/debian/openssh-server.config b/debian/openssh-server.config new file mode 100644 index 000000000..d977cb918 --- /dev/null +++ b/debian/openssh-server.config | |||
@@ -0,0 +1,76 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | action=$1 | ||
4 | version=$2 | ||
5 | |||
6 | # Source debconf library. | ||
7 | . /usr/share/debconf/confmodule | ||
8 | db_version 2.0 | ||
9 | |||
10 | |||
11 | get_config_option() { | ||
12 | option="$1" | ||
13 | |||
14 | [ -f /etc/ssh/sshd_config ] || return | ||
15 | |||
16 | # TODO: actually only one '=' allowed after option | ||
17 | perl -ne 'print if s/^[[:space:]]*'"$option"'[[:space:]=]+//i' \ | ||
18 | /etc/ssh/sshd_config 2>/dev/null | ||
19 | } | ||
20 | |||
21 | |||
22 | if [ -e /etc/init.d/ssh ] && ! grep -q pidfile /etc/init.d/ssh | ||
23 | then | ||
24 | db_fset ssh/use_old_init_script seen false | ||
25 | db_input medium ssh/use_old_init_script || true | ||
26 | db_go | ||
27 | |||
28 | db_get ssh/use_old_init_script | ||
29 | [ "$RET" = "false" ] && exit 0 | ||
30 | else | ||
31 | db_set ssh/use_old_init_script true | ||
32 | db_fset ssh/use_old_init_script seen true | ||
33 | fi | ||
34 | |||
35 | if [ -e /etc/ssh/sshd_config ] | ||
36 | then | ||
37 | if dpkg --compare-versions "$version" lt-nl 1:1.3 ; | ||
38 | then db_input medium ssh/new_config || true | ||
39 | db_go | ||
40 | fi | ||
41 | |||
42 | # An empty version means we're upgrading from before the package split, | ||
43 | # so check. | ||
44 | if dpkg --compare-versions "$version" lt 1:3.8.1p1-11 | ||
45 | then | ||
46 | passwordauth="$(get_config_option PasswordAuthentication)" | ||
47 | crauth="$(get_config_option ChallengeResponseAuthentication)" | ||
48 | if [ "$passwordauth" = no ] && \ | ||
49 | ([ -z "$crauth" ] || [ "$crauth" = yes ]) | ||
50 | then | ||
51 | db_input critical ssh/disable_cr_auth || true | ||
52 | fi | ||
53 | fi | ||
54 | fi | ||
55 | |||
56 | key=/etc/ssh/ssh_host_key | ||
57 | export key | ||
58 | if [ -n "$version" ] && [ -f $key ] && [ ! -x /usr/bin/ssh-keygen ] && | ||
59 | dpkg --compare-versions "$version" lt 1.2.28 | ||
60 | then | ||
61 | # make sure that keys get updated to get rid of IDEA; preinst | ||
62 | # actually does the work, but if the old ssh-keygen is not found, | ||
63 | # it can't do that -- thus, we tell the user that he must create | ||
64 | # a new host key. | ||
65 | printf '\0\0' | 3<&0 sh -c \ | ||
66 | 'dd if=$key bs=1 skip=32 count=2 2>/dev/null | cmp -s - /dev/fd/3' || { | ||
67 | # this means that bytes 32&33 of the key were not both zero, in which | ||
68 | # case the key is encrypted, which we need to fix | ||
69 | db_input high ssh/encrypted_host_key_but_no_keygen || true | ||
70 | } | ||
71 | fi | ||
72 | |||
73 | |||
74 | db_go | ||
75 | |||
76 | exit 0 | ||