天天看點

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

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 指令:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

2)點選進入燈泡标志:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

選擇NIC網卡,并在Neteork source裡面選擇,Bridge橋接;在Device model裡面選擇virtio,按下apply完成橋接設定:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

1.2 虛拟機網絡配置

1)輸入nm-connection-editor指令 ,會出現一個Network Connection視窗:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

将視窗中原有的Ethernet裡面的内容,用下面的減号減掉。減掉後,再選擇加号,選擇以太網,點選create:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

2)點選建立後,出現一個視窗:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

在Ethernet裡面的connection name裡起名字,然後點選device選自己的網卡:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

3)進入菜單欄的 IPV4 Settings裡面,在method裡面選擇manual清單方式:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

在下面的address旁邊選擇add添加,添加的内容是真機ip的最後一位+100,例如原來是:172.25.254.36,現在寫172.25.254.136;netmask寫24;點選gateway即可,然後選擇save儲存:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

4)可以看到虛拟機網絡連接配接視窗的内容發生變化:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

關閉network connection視窗後,可以看到shell如下:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

5)最後輸入 ping 172.25.254.36,隻要輸入該指令後,最後一位time顯示數字,代表真機和虛拟機是通的:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

檢視虛拟機ip:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

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指令後:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

3.1 基本用法

  • ssh [-l 遠端主機使用者] <ip|hostname>

1)ssh -l root 172.25.254.136指令,表示通過ssh指令在136主機中以root身份開啟遠端shell:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

如上圖所示,當輸入yes後,可以使用cd ~/.ssh指令,檢視該檔案下生成known_hosts檔案,檢視該檔案,裡面有一串加密字元串,是在輸入yes時,所連接配接的遠端主機傳過來的:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

在伺服器端輸入cd /etc/ssh指令,這是ssh配置檔案,可以在自己的主機端看到該加密字元前面是 exdsa,在伺服器端/etc/ssh該檔案下查找ecdsa.pub(pub就是公鑰),可以cat檢視該檔案裡面的内容與用戶端完全一緻,隻有一緻時才能認證成功并登陸,不一緻無法登陸:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

2)想改成不一緻,可以把伺服器端的該檔案删除,注意不要rm -fr /etc/ssh,會把整個目錄删掉,造成系統問題,應該用rm -fr /etc/ssh/檔案名,此時想要恢複該檔案時,可以把該目錄下面的所有檔案删除rm -fr /etc/ssh/ssh_host_*,然後輸入 systemctl restart sshd 指令,令該目錄下的所有檔案重新生成,重新生成後,該檔案的key會發生變化,此時身份認證就不成功被拒絕:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

3)當連接配接因為認證問題被拒絕時解決方案:注意看報錯内容,它會提示具體哪一行有問題,可以進入該檔案,把有問題的行删除,再重新連接配接。然後進入 .ssh 檢視裡面會有一個新的key檔案,當該檔案存在之後,再登陸的時候,就不用再輸入yes/no,直接輸入密碼登陸即可:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

3.2 常用參數

參數 含義
-l 指定登陸使用者。注意登陸完服務端後要退出,不要直接切換到用戶端使用者
-i 指定私鑰
-X 遠端登陸的時候開啟圖形
-f 背景運作
-o 指定連接配接參數
-t 指定連接配接跳闆

1)在登陸到服務端時,不寫X參數,要打開gedit時會被拒絕。想要開啟圖形時,要先退出登陸,再加上X參數重新登陸,而後可以打開gedit,打開gedit的這個程序是在服務端的,并非在用戶端産生:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

在伺服器端檢視程序:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

結束該今程序:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

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:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

3)sh -l root 172.25.254 -o “StrictHostKeyChecking=no” 指令,表示首次連接配接不需要輸入yes。執行過該指令後,再重新登陸時,不需要再輸入-o參數也不會再出現yes/on,因為已經自動輸入了:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

4)ssh -l root 172.25.254.1 -t ssh -l root 172.25.254.105指令,表示先登陸1号主機,再跳到105号主機。适用于需要連接配接一台主機的時候被拒絕了,就可以先連接配接其他主機,再跳到該主機上:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

4 sshd key認證

4.1 認證類型

類型 含義及優缺點
對稱加密 加密和解密是同一串字元。容易洩漏、可暴力破解、容易遺忘
非對稱加密 加密用公鑰,解密用私鑰。不會被盜用、攻擊者無法通過無密鑰方式登陸伺服器

4.2 生成非對稱加密密鑰

  • 方法一:ssh-keygen指令

輸入儲存密鑰檔案時,前面括号裡的是預設目錄及檔案名,也可以自己設定檔案及路徑,但這樣需要改打開大量的配置檔案,為了避免這種情況,可以直接回車,預設即可;(empty for no passphrase)表示密鑰密碼,可以要也可以不要,若需要,要確定密碼大于四位。若不要直接回車相當于已經有密鑰,不再要密碼,可以達到免密登陸;最後,id_rsa檔案 表示私鑰,可以開鎖。id_rsa.pub檔案表示公鑰,可以上鎖:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
  • 方法二:非互動式,ssh-keygen -f /root/.ssh/id_rsa -P “” ,引号中可以輸入密碼,但一般為空

1)輸入非互動式指令并對伺服器加密:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

2)登陸伺服器:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

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表示添加成功:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

檢視伺服器端是否有公鑰:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

檢視用戶端的公鑰是否與伺服器端一緻:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

檢視用戶端的私鑰,并免密登陸伺服器:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

移除用戶端的私鑰,無法登陸伺服器:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

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)實驗前的準備:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

2)檢視端口資訊:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

3)指定端口号,進行遠端連接配接:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

4)改端口号:進入 vim /etc/ssh/sshd_config檔案,改port,進入裡面之後,看到前面有個#,代表系統不讀。可以把#去掉,再把port改了。改完後,使用systemctl reload sshd.service重新加載配置,再檢視端口号。改成功後,要把防火牆關閉,否則新端口号不起作用:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

修改端口号:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

重新加載sshd配置:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

檢視端口号:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

關閉防火牆:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

5)對超級使用者登陸禁止,編輯vim /etc/ssh/sshd_config檔案,裡面的permitrootlogin 改為no,不能登陸超級使用者。然後systemctl restart sshd。隻限制超級使用者,不限制普通使用者:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

超級使用者登陸失敗,普通使用者登陸成功:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

6)使用者黑名單,lee使用者進入黑名單無法登入,其他使用者可以:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

多個使用者進入黑名單:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

7)lee使用者進入白名單,隻有該使用者可登陸:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解
Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

8)是否開啟原始密碼認證方式(一般不開啟,隻用密鑰方式)

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

不開啟密碼但又沒有密鑰檔案時:

Linux中的遠端登陸服務1 實驗環境配置2 Openssh的功能3 ssh3.1 基本用法3.2 常用參數4 sshd key認證5 sshd 安全優化參數詳解

繼續閱讀