# Ubuntu Exception ## 啟動SSH失敗:'Failed to start Openbsd secure shell server ubuntu 20.04' ### 錯誤畫面 ![image.png](https://hackmd.io/_uploads/Bk5TrWZXT.png) ### 翻出日誌 ```bash= sudo journalctl -xeu ssh.service ``` ![image.png](https://hackmd.io/_uploads/SJtHUZZX6.png) 根據日誌,SSH 服務最開始失敗的地方是: ``` sshd[23967]: no hostkeys available ``` 這意味著 SSH 服務無法找到任何主機私鑰。主機私鑰是 SSH 服務用於驗證遠程主機身份的私鑰。如果 SSH 服務無法找到任何主機私鑰,它將無法啟動。 所以請執行 ### Solution ```bash= sudo dpkg-reconfigure openssh-server ``` 命令的具體工作原理如下: 首先,該命令將卸載 SSH 服務。 然後,該命令將重新生成 SSH 服務的主機私鑰。 最後,該命令將重新安裝 SSH 服務。 由於 SSH 服務的主機密鑰是 SSH 服務用於驗證遠程主機身份的密鑰,因此重新生成 SSH 服務的主機密鑰可以解決 SSH 服務無法找到主機密鑰的問題。 此外,sudo dpkg-reconfigure openssh-server 命令還將 SSH 服務的配置文件重置為默認值。這可以解決 SSH 服務配置有錯誤的問題。 因此,在這種情況下,sudo dpkg-reconfigure openssh-server 命令重新生成了 SSH 服務的主機密鑰,並重置了 SSH 服務的配置文件,從而解決了 SSH 服務無法啟動的問題。 ## Apache2 Exception ### 錯誤畫面 ![image](https://hackmd.io/_uploads/r1qJEWi2a.png) ### 翻出日誌 ```bash= sudo journalctl -xeu apache2.service ``` ![image](https://hackmd.io/_uploads/BJzfEWinp.png) 根據截圖,Apache2 無法綁定到端口 80。這可能是由以下幾種原因引起的: * 另一個程序正在使用 80 port。 * Apache2 的配置文件存在錯誤。 * Apache2 的安裝損壞。 以下是一些可能的解決方案: 1. 檢查是否有另一個程序正在使用端口 80。您可以使用以下命令來查看哪些程序正在使用哪些端口: ```bash= sudo netstat -an | grep LISTEN ``` 如果輸出顯示另一個程序正在使用端口 80,您需要停止該程序或將其配置為使用其他端口。 2. 檢查 Apache2 的配置文件是否存在錯誤。Apache2 的主配置文件是 `/etc/apache2/apache2.conf`。可以使用以下命令來檢查配置文件是否存在錯誤: ```bash= sudo apache2ctl configtest ``` 如果配置文件存在錯誤,您需要更正錯誤然後重新啟動 Apache2。 3. 重新安裝 Apache2。如果上述解決方案不起作用,可以嘗試重新安裝 Apache2。 以下是針對上述解決方案的詳細說明: **1. 檢查是否有另一個程序正在使用端口 80** 要檢查是否有另一個程序正在使用端口 80,可以使用以下命令: ```bash= sudo netstat -an | grep LISTEN ``` 此命令將列出所有正在使用 TCP 或 UDP 端口的程序。輸出將包括程序的 PID、端口號和程序名稱。 如果輸出顯示另一個程序正在使用端口 80,可以使用以下命令來停止該程序: ```bash= sudo kill <pid> ``` 或使用以下命令來將程序配置為使用其他端口: ```bash= sudo netstat -an | grep LISTEN ``` 此命令將列出所有正在使用 TCP 或 UDP 端口的程序。輸出將包括程序的 PID、端口號和程序名稱。 **2. 檢查 Apache2 的配置文件是否存在錯誤** Apache2 的主配置文件是 `/etc/apache2/apache2.conf`。可以使用以下命令來檢查配置文件是否存在錯誤: ```bash= sudo apache2ctl configtest ``` 此命令將檢查配置文件是否存在錯誤。如果配置文件存在錯誤,您需要更正錯誤然後重新啟動 Apache2。 **3. 重新安裝 Apache2** 如果上述解決方案不起作用,請嘗試重新安裝 Apache2。 要重新安裝 Apache2,可以使用以下命令: ```bash= sudo apt-get install apache2 ```