openssh-server
1.openssh-server
功能:讓遠程主機可以通過網絡訪問sshd服務,開始一個安全shell
注意:
(1)爲了便於識別兩個虛擬機,現將兩臺虛擬機中行提示符裏面的主機名進行修改。desktop虛擬機主機名設置爲client,server虛擬機主機名設置爲server。如下圖所示:
(2)在兩臺虛擬機上均執行刪除/root/.ssh/命令
(3)在兩臺虛擬機上均執行修改ip即nm-connection-editor命令
2.客戶端連接方式
ssh 遠程主機用戶@遠程主機ip
ssh root@172.25.0.11
The authenticity of host '172.25.0.11 (172.25.0.11)' can't be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)? yes ##連接陌生主機時需要建立認證關係
Warning: Permanently added '172.25.0.11' (ECDSA) to the list of known hosts.
root@172.25.0.11's password: ##遠程用戶密碼
Last login: Mon Oct 3 03:13:47 2016 ##登陸成功
如下圖所示,172.25.66.11爲服務主機的ip,由於不是第一次連接,就不需要建立認證關係。
客戶端連接到服務主機之後,我們可以在服務主機使用w -f查看,發現IP爲172.25.66.10的主機連接上了。如下圖所示:
ssh 遠程主機用戶@遠程主機ip -X ##調用遠程主機圖形工具
客戶主機通過ssh 遠程主機用戶@遠程主機ip -X打開服務主機的gedit,服務主機通過w -f可查看到客戶主機連接該機並執行gedit,如下圖所示。
ssh 遠程主機用戶@遠程主機ip command ##直接在遠程主機運行某條命令
3.sshkey加密
(1)生成公鑰私鑰
ssh-keygen ##生成公鑰私鑰工具
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):[enter] ##加密字符保存文件(建議用默認)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): [enter] ##密鑰密碼,必須>4個字符
Enter same passphrase again: [enter] ##確認密碼
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ab:3c:73:2e:c8:0b:75:c8:39:3a:46:a2:22:34:84:81 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|o |
|E. |
|.. |
|. . o |
|.o. * . S |
|oo.o o . |
|+ =. . . |
|o. oo.+.. |
| ..o*. |
+-----------------+
在服務主機生成公鑰私鑰,該操作的過程如圖所示:
ls /root/.ssh/
id_rsa id_rsa.pub
id_rsa ##私鑰,就是鑰匙
id_rsa.pub ##公鑰,就是鎖
生成公鑰私鑰,查看/root/.ssh/下的文件內容就會發現有公鑰和私鑰的兩個文件(在操作前,我已經刪除掉該目錄下的所有文件及目錄),如下圖所示:
(2)添加key認證方式
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.0.11
ssh-copy-id ##添加key認證方式的工具
-i ##指定加密key文件
/root/.ssh/id_rsa.pub ##加密key
root ##加密用戶爲root
172.25.0.11 ##被加密主機ip
生成公鑰私鑰後,需要添加key認證方式,也就是給服務主機上鎖。如下圖所示:
認證成功,就會發現/root/.ssh/目錄下面會多兩個文件,如下圖所示:
(3)分發鑰匙給client主機
scp /root/.ssh/id_rsa
root@172.25.0.10:/root/.ssh/
然後得把鑰匙文件發送給客戶主機,如下圖所示:
服務主機給客戶主機分發鑰匙後,在客戶主機上的/root/.ssh/目錄下就會多出兩個文件(在操作前,我已經刪除掉該目錄下的所有文件及目錄),如下圖所示:
(4)測試
ssh root@172.25.0.11 ##通過id_rsa直接連接不需要輸入用戶密碼
Last login: Mon Oct 3 03:58:10 2016 from 172.25.0.250
測試結果如下圖所示:
4.提升openssh的安全級別
(1)openssh-server配置文件
/etc/ssh/sshd_config
78 PasswordAuthentication yes|no ##是否開啓用戶密碼認證,yes爲支持no爲關閉
把yes改爲no,然後測試。進行該測試之前先把客戶主機上的鑰匙文件刪掉,這要客戶主機連接服務主機就需要輸入密碼,結果發現無法連接(做完測試記得把鑰匙文件再發送給客戶主機)。測試結果如下:
48 PermitRootLogin yes|no ##是否允許超級用戶登陸
把yes改爲no,如下圖:
然後進行測試
49 AllowUsers student westos ##用戶白名單,只有在名單中出現的用戶可以使用sshd建立shell
50 DenyUsers westos ##用戶黑名單
(2)控制ssh客戶端訪問
vim /etc/hosts.deny
sshd:ALL ##拒絕所有人鏈接sshd服務
vim /etc/hosts.allow
sshd:172.25.254.250 ##允許250主機鏈接sshd
sshd:172.25.254.250, 172.25.254.180##允許250和180鏈接
sshd:ALL EXCEPT 172.25.254.200 ##只不允許200鏈接sshd
設置spawn,客戶主連接服務主機會顯示客戶主機的ip。
(3)ssh登陸提示修改該
vim /etc/motd ##顯示登陸後字符
hello world ##在登陸後就會顯示這個字符
注意:白名單與黑名單的設置必須與78及48行的設置內容一致