上一個博客我將爛電腦從Windows 7系統轉爲了Ubuntu 16.04,這篇博客主要展示在該系統上啓動SSH服務。Ubuntu16.04 桌面版默認只會安裝ssh客戶端,不會安裝ssh服務器。也就是你可以使用ssh命令連接遠程主機,但是你不能夠連接本機。
<------------------------------------------------------------------------>
使用 dpkg -l | grep ssh查看一下,只發現系統中只安裝了客戶端
或直接確定是否有安裝SSH服務:ps -e | grep ssh*
<------------------------------------------------------------------------>
安裝ssh:sudo apt-get install ssh
或apt-get install openssh-server 安裝SSH-server
apt-get install openssh-client 安裝SSH-client
<------------------------------------------------------------------------>
啓動SSH服務: /etc/init.d/ssh restart
啓動、停止和重啓openssh-server的命令
/etc/init.d/ssh start
/etc/init.d/ssh stop
/etc/init.d/ssh restart
<------------------------------------------------------------------------>
檢查是否啓動:netstat -tlnp | grep ssh
或查看狀態:/etc/init.d/ssh status or ps -e | grep sshd
<------------------------------------------------------------------------>
配置openssh-server
openssh-server配置文件位於/etc/ssh/sshd_config,在這裏可以配置SSH的服務端口等,例如:默認端口是22,可以自定義爲其他端口號,如222,然後需要重啓SSH服務。
<------------------------------------------------------------------------>
Ubuntu中配置openssh-server開機自動啓動
打開/etc/rc.local文件,在exit 0語句前加入:/etc/init.d/ssh start
https://www.jb51.net/os/Ubuntu/181138.html
SSH協議本身提供兩個服務器功能:一個就是遠程連接Shell服務器,俗稱SSH;一個就是類似FTP服務的Sftp-Server,提供更安全的FTP服務,兩個服務都是架構在Port 22上的。SSH服務器端與客戶端的連接步驟流程如下:
- 服務器建立公鑰文件:每一次啓動SSHD服務時,該服務會主動去找**/etc/ssh/ssh_host文件**,若系統剛剛安裝完成,由於沒有這些公鑰文件,因此SSHD會主動去計算出這些需要的公鑰文件,同時也會計算出服務器自己需要的私鑰文件。(服務器提供的公鑰與自己的私鑰都放置在/etc/ssh/ssh_host)
- 客戶端主動連接
- 服務器傳送公鑰文件給客戶端:接收到客戶端的要求後,服務器便將第一個步驟取得的公鑰文件傳送給客戶端使用(此時應是名碼傳送,反正公鑰本來就是給大家使用的)
- 客戶端記錄/比對服務器的公鑰數據及隨機計算自己的公私鑰;若客戶端第一次連接到次服務器,則會將服務器的公鑰數據記錄到客戶端的用戶主目錄內的~/.ssh/known_hosts。若是已經記錄過該服務器的公鑰數據,則客戶端會去比對此次接收到的與之前的記錄是否有差異。若接收此公鑰數據,則開始計算客戶端自己的公私鑰數據。
- 返回客戶端的公鑰數據到服務器:用戶將自己的公鑰傳送給服務器。此時服務器具有服務器的私鑰與客戶端的公鑰,而客戶端則具有服務器的公鑰以及客戶端自己的私鑰。
- 服務器接收私鑰開始雙向加解密:服務器傳送數據時,將用戶的公鑰加密後進行發送,客戶端接收後,用自己的私鑰解密;客戶端傳送數據時,將服務器的私鑰加密後進行發送,服務器接收後,用服務器的私鑰解密。