當直接從Live CD鏡像(例如從U盤)啟動Ubuntu系統時,如果想要安裝sshd服務,那麼需要安裝openssh-server軟體包,如果用apt-get install的方式安裝不了就換用aptitude安裝,安裝成功後卻發現啟動不了ssh服務,如下所示:
問題展現:
Preconfiguring packages ...
Selecting previously unselected package openssh-server.
(Reading database ... 154905 files and directories currently installed.)
Unpacking openssh-server (from .../openssh-server_1%3a6.0p1-1ubuntu1_i386.deb) ...
Selecting previously unselected package ssh-import-id.
Unpacking ssh-import-id (from .../ssh-import-id_2.12-0ubuntu1_all.deb) ...
Processing triggers for ureadahead ...
Processing triggers for ufw ...
Processing triggers for man-db ...
Setting up openssh-server (1:6.0p1-1ubuntu1) ...
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
initctl: Unknown job: ssh
start: Unknown job: ssh
Setting up ssh-import-id (2.12-0ubuntu1) ...
Trying to start it manually produces the same result:
[email protected]:~$ sudo start ssh
start: Unknown job: ssh
[email protected]:~$ sudo /etc/init.d/ssh start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service ssh start
initctl: Unknown job: ssh
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start ssh
解決方案:
這應該算是Ubuntu的一個bug,可以用下面的方法解決:
[email protected]:~$ sudo /usr/sbin/sshd
Missing privilege separation directory: /var/run/sshd
[email protected]:~$ sudo mkdir /var/run/sshd
[email protected]:~$ sudo /usr/sbin/sshd
[email protected]:~$ netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
啟動端口22表示ssh服務成功啟動,可以使用ssh localhost測試下。
參考資料:openssh-server package does not start sshd on a live CD boot