]> git.pld-linux.org Git - packages/openssh.git/blob - opensshd.init
- rebuild with openssl-1.0.1k
[packages/openssh.git] / opensshd.init
1 #!/bin/sh
2 #
3 # sshd          sshd (secure shell daemon)
4 #
5 # chkconfig:    345 22 88
6 #
7 # description:  sshd (secure shell daemon) is a server part of the ssh suite. \
8 #               Ssh can be used for remote login, remote file copying, TCP port \
9 #               forwarding etc. Ssh offers strong encryption and authentication.
10
11 # Source function library
12 . /etc/rc.d/init.d/functions
13
14 upstart_controlled --except init configtest
15
16 # Get network config
17 . /etc/sysconfig/network
18
19 SSHD_OOM_ADJUST=-1000
20 PIDFILE=/var/run/sshd.pid
21
22 # Get service config
23 [ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd
24
25 # Check that networking is up.
26 if is_yes "${NETWORKING}"; then
27         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status -a "$1" != init ]; then
28                 msg_network_down "OpenSSH"
29                 exit 1
30         fi
31 else
32         exit 0
33 fi
34
35 adjust_oom() {
36         if [ -e $PIDFILE ]; then
37                 for pid in $(cat $PIDFILE); do
38                         echo "$SSHD_OOM_ADJUST" 2>/dev/null > /proc/$pid/oom_score_adj
39                 done
40         fi
41 }
42
43 checkconfig() {
44         ssh_gen_keys
45         /usr/sbin/sshd -t || exit 1
46 }
47
48 ssh_gen_keys() {
49         # generate new keys with empty passwords if they do not exist
50         if [ ! -f /etc/ssh/ssh_host_key -o ! -s /etc/ssh/ssh_host_key ]; then
51                 /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N '' >&2
52                 chmod 600 /etc/ssh/ssh_host_key
53                 [ -x /sbin/restorecon ] && /sbin/restorecon /etc/ssh/ssh_host_key
54         fi
55         if [ ! -f /etc/ssh/ssh_host_rsa_key -o ! -s /etc/ssh/ssh_host_rsa_key ]; then
56                 /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' >&2
57                 chmod 600 /etc/ssh/ssh_host_rsa_key
58                 [ -x /sbin/restorecon ] && /sbin/restorecon /etc/ssh/ssh_host_rsa_key
59         fi
60         if [ ! -f /etc/ssh/ssh_host_dsa_key -o ! -s /etc/ssh/ssh_host_dsa_key ]; then
61                 /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' >&2
62                 chmod 600 /etc/ssh/ssh_host_dsa_key
63                 [ -x /sbin/restorecon ] && /sbin/restorecon /etc/ssh/ssh_host_dsa_key
64         fi
65         if [ ! -f /etc/ssh/ssh_host_ecdsa_key -o ! -s /etc/ssh/ssh_host_ecdsa_key ]; then
66                 /usr/bin/ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' >&2
67                 chmod 600 /etc/ssh/ssh_host_ecdsa_key
68                 [ -x /sbin/restorecon ] && /sbin/restorecon /etc/ssh/ssh_host_ecdsa_key
69         fi # ecdsa
70         if [ ! -f /etc/ssh/ssh_host_ed25519_key -o ! -s /etc/ssh/ssh_host_ed25519_key ]; then
71                 /usr/bin/ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N '' >&2
72                 chmod 600 /etc/ssh/ssh_host_ed25519_key
73                 [ -x /sbin/restorecon ] && /sbin/restorecon /etc/ssh/ssh_host_ed25519_key
74         fi # ed25519
75 }
76
77 start() {
78         # Check if the service is already running?
79         if [ -f /var/lock/subsys/sshd ]; then
80                 msg_already_running "OpenSSH"
81                 return
82         fi
83
84         checkconfig
85
86         if [ ! -s /etc/ssh/ssh_host_key ]; then
87                 msg_not_running "OpenSSH"
88                 nls "No SSH host key found! You must run \"%s init\" first." "$0"
89                 exit 1
90         fi
91
92         if is_yes "$IPV4_NETWORKING" && is_no "$IPV6_NETWORKING"; then
93                 OPTIONS="$OPTIONS -4"
94         fi
95         if is_yes "$IPV6_NETWORKING" && is_no "$IPV4_NETWORKING"; then
96                 OPTIONS="$OPTIONS -6"
97         fi
98
99         msg_starting "OpenSSH"
100         daemon --pidfile $PIDFILE /usr/sbin/sshd $OPTIONS
101         RETVAL=$?
102         adjust_oom
103         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/sshd
104 }
105
106 stop() {
107         if [ ! -f /var/lock/subsys/sshd ]; then
108                 msg_not_running "OpenSSH"
109                 return
110         fi
111
112         msg_stopping "OpenSSH"
113         # we use start-stop-daemon to stop sshd, as it is unacceptable for such
114         # critical service as sshd to kill it by procname, but unfortunately
115         # rc-scripts does not provide way to kill *only* by pidfile
116         start-stop-daemon --stop --quiet --pidfile $PIDFILE && ok || fail
117         rm -f /var/lock/subsys/sshd >/dev/null 2>&1
118 }
119
120 reload() {
121         if [ ! -f /var/lock/subsys/sshd ]; then
122                 msg_not_running "OpenSSH"
123                 RETVAL=7
124                 return
125         fi
126
127         checkconfig
128         msg_reloading "OpenSSH"
129         killproc sshd -HUP
130         RETVAL=$?
131 }
132
133 condrestart() {
134         if [ ! -f /var/lock/subsys/sshd ]; then
135                 msg_not_running "OpenSSH"
136                 RETVAL=$1
137                 return
138         fi
139
140         checkconfig
141         stop
142         start
143 }
144
145 RETVAL=0
146 # See how we were called.
147 case "$1" in
148   start)
149         start
150         ;;
151   stop)
152         stop
153         ;;
154   restart)
155         checkconfig
156         stop
157         start
158         ;;
159   try-restart)
160         condrestart 0
161         ;;
162   reload|force-reload)
163         reload
164         ;;
165   configtest)
166         checkconfig
167         ;;
168   init)
169         nls "Now the SSH host key will be generated. Please note, that if you"
170         nls "will use password for the key, you will need to type it on each"
171         nls "reboot."
172         ssh_gen_keys
173         ;;
174   status)
175         status --pidfile $PIDFILE sshd
176         exit $?
177         ;;
178   *)
179         msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|configtest|init|status}"
180         exit 3
181 esac
182
183 exit $RETVAL
This page took 0.043103 seconds and 3 git commands to generate.