Linux中的遠端登陸服務
- 1 實驗環境配置
-
- 1.1 配置網絡的橋接線
- 1.2 虛拟機網絡配置
- 2 Openssh的功能
- 3 ssh
- 3.1 基本用法
- 3.2 常用參數
- 4 sshd key認證
-
- 4.1 認證類型
- 4.2 生成非對稱加密密鑰
- 4.3 對伺服器加密
- 5 sshd 安全優化參數詳解
1 實驗環境配置
1.1 配置網絡的橋接線
配置步驟
- 輸入‘cd /etc/sysconfig/network-scripts’指令進入network-scripts檔案,ls檢視改檔案中是否有 ifcfg-br0 檔案,若沒有則代表需要配置網橋
- cp ifcfg-enp0s25 /mnt,将network-scripts中的網卡配置檔案(ifcfg-enp0s25)複制到/mnt下,注意,不同的主機的網卡配置檔案名稱不同
- cp ifcfg-enp0s25 ifcfg-br0,複制網卡配置檔案的内容到ifcfg-br0檔案,改檔案時開啟網卡的一個br0接口
- vim ifcfg-enp0s25,進入該檔案并按如下配置,如果進入該檔案時有其他内容,可以删除:
-
DEVICE=enp0s25
BOOTPROTO=none
ONBPPT=yes
BRIDGE=br0
-
- vim ifcfg-br0,再進入該檔案并做如下配置,如果進入該檔案時有其他内容,可以删除:
-
DEVICE=br0
BOOTPROTO=none
IPADDR=172.25.254.1(自己的真機id)
PREFIX=24
ONBOOT=yes
TYPE=Bridge
-
- 完成後,輸入reboot,重新開機系統即可
- 重新開機系統後,輸入 bridge link指令 ,可以看到網卡開啟了一個br0接口
- 切換到root使用者,輸入 virt-manager 指令,會出現Virtual Machine Manager視窗,輕按兩下進入裡面的虛拟機,打開後,可以看到一個燈泡标志,點選進入。進入後,左側可以找到NIC網卡,在Neteork source裡面選擇,Bridge橋接;在Device model裡面選擇virtio。最後點選apply,這樣橋接就設定完成。
1)輸入 virt-manager 指令:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SMxEzN0kTMxAjMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2)點選進入燈泡标志:
選擇NIC網卡,并在Neteork source裡面選擇,Bridge橋接;在Device model裡面選擇virtio,按下apply完成橋接設定:
1.2 虛拟機網絡配置
1)輸入nm-connection-editor指令 ,會出現一個Network Connection視窗:
将視窗中原有的Ethernet裡面的内容,用下面的減号減掉。減掉後,再選擇加号,選擇以太網,點選create:
2)點選建立後,出現一個視窗:
在Ethernet裡面的connection name裡起名字,然後點選device選自己的網卡:
3)進入菜單欄的 IPV4 Settings裡面,在method裡面選擇manual清單方式:
在下面的address旁邊選擇add添加,添加的内容是真機ip的最後一位+100,例如原來是:172.25.254.36,現在寫172.25.254.136;netmask寫24;點選gateway即可,然後選擇save儲存:
4)可以看到虛拟機網絡連接配接視窗的内容發生變化:
關閉network connection視窗後,可以看到shell如下:
5)最後輸入 ping 172.25.254.36,隻要輸入該指令後,最後一位time顯示數字,代表真機和虛拟機是通的:
檢視虛拟機ip:
2 Openssh的功能
1)sshd服務的用途
作用:可以實作通過網絡在遠端主機中開啟安全shell的操作
ssh:Secure SHell(用戶端服務)
sshd:Secure SHell daemon(服務端服務)
2)安裝包
當沒有ssh服務時,使用openssh-server安裝包進行安裝
3)主配置檔案
/etc/ssh/sshd_conf
4)預設端口
22
3 ssh
做以下實驗時,可以在真實主機裡面建立一個純淨的使用者(虛拟機作伺服器,真實主機做用戶端)。建立了一個使用者後,隻要使用過ssh指令,即使沒有連接配接成功,那麼目前使用者的家目錄裡就會出現.ssh配置檔案,沒使用該指令之前是沒有的,在沒有連接配接過任何主機之前該目錄是空的
使用過ssh指令後:
3.1 基本用法
- ssh [-l 遠端主機使用者] <ip|hostname>
1)ssh -l root 172.25.254.136指令,表示通過ssh指令在136主機中以root身份開啟遠端shell:
如上圖所示,當輸入yes後,可以使用cd ~/.ssh指令,檢視該檔案下生成known_hosts檔案,檢視該檔案,裡面有一串加密字元串,是在輸入yes時,所連接配接的遠端主機傳過來的:
在伺服器端輸入cd /etc/ssh指令,這是ssh配置檔案,可以在自己的主機端看到該加密字元前面是 exdsa,在伺服器端/etc/ssh該檔案下查找ecdsa.pub(pub就是公鑰),可以cat檢視該檔案裡面的内容與用戶端完全一緻,隻有一緻時才能認證成功并登陸,不一緻無法登陸:
2)想改成不一緻,可以把伺服器端的該檔案删除,注意不要rm -fr /etc/ssh,會把整個目錄删掉,造成系統問題,應該用rm -fr /etc/ssh/檔案名,此時想要恢複該檔案時,可以把該目錄下面的所有檔案删除rm -fr /etc/ssh/ssh_host_*,然後輸入 systemctl restart sshd 指令,令該目錄下的所有檔案重新生成,重新生成後,該檔案的key會發生變化,此時身份認證就不成功被拒絕:
3)當連接配接因為認證問題被拒絕時解決方案:注意看報錯内容,它會提示具體哪一行有問題,可以進入該檔案,把有問題的行删除,再重新連接配接。然後進入 .ssh 檢視裡面會有一個新的key檔案,當該檔案存在之後,再登陸的時候,就不用再輸入yes/no,直接輸入密碼登陸即可:
3.2 常用參數
參數 | 含義 |
---|---|
-l | 指定登陸使用者。注意登陸完服務端後要退出,不要直接切換到用戶端使用者 |
-i | 指定私鑰 |
-X | 遠端登陸的時候開啟圖形 |
-f | 背景運作 |
-o | 指定連接配接參數 |
-t | 指定連接配接跳闆 |
1)在登陸到服務端時,不寫X參數,要打開gedit時會被拒絕。想要開啟圖形時,要先退出登陸,再加上X參數重新登陸,而後可以打開gedit,打開gedit的這個程序是在服務端的,并非在用戶端産生:
在伺服器端檢視程序:
結束該今程序:
2) 當登陸遠端主機時,輸入ssh -Xl root 172.25.254.136就會直接登陸服務端了。若隻想在遠端主機裡面執行指令,可以使用ssh -Xl root 172.25.254.136 gedit指令,當結束gedit程序後,還是在本機裡面,而不是在服務端。但是這樣執行,該指令會把目前的shell直接占用,若想在背景運作,可以再加上f參數,ssh -Xfl root 172.25.254.136 gedit:
3)sh -l root 172.25.254 -o “StrictHostKeyChecking=no” 指令,表示首次連接配接不需要輸入yes。執行過該指令後,再重新登陸時,不需要再輸入-o參數也不會再出現yes/on,因為已經自動輸入了:
4)ssh -l root 172.25.254.1 -t ssh -l root 172.25.254.105指令,表示先登陸1号主機,再跳到105号主機。适用于需要連接配接一台主機的時候被拒絕了,就可以先連接配接其他主機,再跳到該主機上:
4 sshd key認證
4.1 認證類型
類型 | 含義及優缺點 |
---|---|
對稱加密 | 加密和解密是同一串字元。容易洩漏、可暴力破解、容易遺忘 |
非對稱加密 | 加密用公鑰,解密用私鑰。不會被盜用、攻擊者無法通過無密鑰方式登陸伺服器 |
4.2 生成非對稱加密密鑰
- 方法一:ssh-keygen指令
輸入儲存密鑰檔案時,前面括号裡的是預設目錄及檔案名,也可以自己設定檔案及路徑,但這樣需要改打開大量的配置檔案,為了避免這種情況,可以直接回車,預設即可;(empty for no passphrase)表示密鑰密碼,可以要也可以不要,若需要,要確定密碼大于四位。若不要直接回車相當于已經有密鑰,不再要密碼,可以達到免密登陸;最後,id_rsa檔案 表示私鑰,可以開鎖。id_rsa.pub檔案表示公鑰,可以上鎖:
- 方法二:非互動式,ssh-keygen -f /root/.ssh/id_rsa -P “” ,引号中可以輸入密碼,但一般為空
1)輸入非互動式指令并對伺服器加密:
2)登陸伺服器:
4.3 對伺服器加密
-
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
eg:ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
上面指令中,加的使用者是誰,鎖的就是誰,其他使用者不會被鎖。如果用戶端使用者的.ssh目錄下存在私鑰檔案,就可以直接免密登陸。如果私鑰不存在這個路徑下,無法直接認證,那麼就需要輸入密碼,此時若不知道密碼,就無法登入。當密鑰被竊取了,可以在伺服器端,将公鑰移出.ssh目錄,此時用戶端也是無法連接配接伺服器的。出現added表示添加成功:
檢視伺服器端是否有公鑰:
檢視用戶端的公鑰是否與伺服器端一緻:
檢視用戶端的私鑰,并免密登陸伺服器:
移除用戶端的私鑰,無法登陸伺服器:
5 sshd 安全優化參數詳解
配置 | 含義 |
---|---|
Port 2222 | 設定端口為2222,預設為22 |
PermitRootLogin yes | no |
PasswordAuthentication yes | no |
AllowUsers lee | 使用者白名單(隻有誰能用),多個使用者空格隔開就可 |
DenyUsers lee | 使用者黑名單,多個使用者空格隔開就可 |
- 注意安全優化是再伺服器上操作的
- 做實驗前要關閉防火牆:systemctl disable --now firewalld
- 以下操作都是在vim /etc/ssh/sshd_config檔案中進行的
- 每次修改後,都要重新加載配置,systemctl reload sshd.service
- 做端口實驗前,用getenforce指令檢視,系統中的selinux是否開啟,開啟時無法改變端口号 。若它時開啟的,需要關閉它, 用vim /etc/selinux/config指令,使檔案裡面的SELINUX=disabled即可,完成後需要重新開機系統;可以使用ss -anltupe | grep sshd檢視端口資訊,其中a表示:所有端口 ;n表示:不做解析,即顯示ip而不是主機名;l表示:正在活躍的 ;表示:tcp協定; u表示:udp協定 ;p表示:程式名稱 ;e表示:顯示完全資訊。
1)實驗前的準備:
2)檢視端口資訊:
3)指定端口号,進行遠端連接配接:
4)改端口号:進入 vim /etc/ssh/sshd_config檔案,改port,進入裡面之後,看到前面有個#,代表系統不讀。可以把#去掉,再把port改了。改完後,使用systemctl reload sshd.service重新加載配置,再檢視端口号。改成功後,要把防火牆關閉,否則新端口号不起作用:
修改端口号:
重新加載sshd配置:
檢視端口号:
關閉防火牆:
5)對超級使用者登陸禁止,編輯vim /etc/ssh/sshd_config檔案,裡面的permitrootlogin 改為no,不能登陸超級使用者。然後systemctl restart sshd。隻限制超級使用者,不限制普通使用者:
超級使用者登陸失敗,普通使用者登陸成功:
6)使用者黑名單,lee使用者進入黑名單無法登入,其他使用者可以:
多個使用者進入黑名單:
7)lee使用者進入白名單,隻有該使用者可登陸:
8)是否開啟原始密碼認證方式(一般不開啟,隻用密鑰方式)
不開啟密碼但又沒有密鑰檔案時: