Linux SSH遠端訪問

從不吃素陳長老發表於2020-11-05

一、OpenSSH伺服器

1. SSH(Secure Shell)協議

  1. 是一種安全通道協議
  2. 對通訊資料進行了加密處理,用於遠端管理

2.OpenSSH服務

  1. 服務名稱:sshd
  2. 服務端主程式:/usr/sbin/sshd
  3. 服務端配置檔案:/etc/ssh/sshd_config

3.使用者登入控制

  1. 禁用root使用者、空密碼使用者

  2. 限制登入驗證時間、重試次數

  3. AllowUsers、DenyUsers

    vi  /etc/ssh/sshd_config                   #進入編輯
    
 LoginGraceTime  2m           #限定密碼登入的訪問時間
                                           如別人用SSH遠端訪問,2分鐘沒有輸入密碼就 
                                          會顯示超時
 PermitRootLogin  no           #不允許root賬號登入,Yes是允許,預設是Yes
 MaxAuthTries     6               #最大嘗試密碼的次數是6次,超過6次伺服器會斷開
 PermitEmptyPasswords   no   #不允許空密碼登入
 ........
 AllowUsers   jerry  admin@61.23.24.25       #白名單
 jerry、admin:只允許這2個使用者訪問
 61.23.24.25:客戶機的IP

注:AllowUsers 白名單、DenyUsers 黑名單,兩個不能同時使用

3.1白名單專案實施
  1. 先進ssh

     vi  /etc/ssh/sshd_config          
    

按大G到檔案的最後一行,小o從游標處所在行之下插入一個新行內容
輸入AllowUsers lisi zhangsan@20.0.0.15客戶機的IP(指定被遠端的客戶機IP地址)
wq儲存退出
在這裡插入圖片描述
2. 重啟sshd服務

systemctl  restart   sshd          #重啟sshd服務
建立白名單允許的訪問的使用者
useradd  lisi 
passwd   lisi
123123

useradd zhangsan
passwd zhangsan
123123

在這裡插入圖片描述
3. 然後去白名單指定的客戶機ip地址的機器上測試是否可以用SSH遠端到本機的賬戶

 ssh   lisi@20.0.0.14   -p   22     #使用ssh登入要登入的客戶機ip地址
 whoami           #表示我是誰
 exit             #登出

在這裡插入圖片描述

3.2黑名單專案實施
  1. 先進ssh

    vi  /etc/ssh/sshd_config
                改為
     DenyUsers   lisi@20.0.0.15            #把lisi放入黑名單,20.0.0.15這個客戶機是ssh遠端
                                             不上本機          (20.0.0.14)的lisi賬戶的
    

在這裡插入圖片描述

  1. 測試

     上面已經把lisi賬戶放入黑名單,用20.0.0.14的ip的客戶機用ssh遠端本機(20.0.0.15)的lisi賬戶
     是遠端不上的,連續輸入3次密碼不管是否正確,最後都會返回為客戶機的初始賬戶。
    

在這裡插入圖片描述

  1. 客戶機遠端本機登入賬戶,除本機黑名單意外的賬戶,其他賬戶都可以遠端通過

     ssh    zhangsan@20.0.0.14                 #登入20.0.0.14機器的zhangsan賬戶
     exit                                      #退出 
    

在這裡插入圖片描述

4.登入驗證方式

登入驗證方式
密碼驗證:核對使用者明、密碼是否匹配
金鑰對驗證:核對客戶的私鑰、服務端公鑰是否匹配

金鑰分為:公鑰與私鑰
公鑰:大家都可以有這個鑰匙,解的是私鑰鎖
私鑰:私鑰解的是公鑰的鎖
  1. 生成金鑰對的過程

    ssh-keygen  -t  rsa             #生成金鑰的方式
    ls   -lh           #只能檢視到沒有加密、沒有隱藏的檔案是可以看到的
    ls   -lah         #可以檢視到加密、隱藏的檔案
    cd  .ssh/       #進入.ssh目錄
    ls  -lah            #檢視.ssh目錄中的檔案
    會生成兩條檔案,第一條是私鑰,第二條是公鑰    
    

在這裡插入圖片描述

  1. 資料加密
    1. 傳送方使用接收方的公鑰加密資料
    2. 接收方使用自已的私鑰解密資料
    3. 資料加密能保證所傳送資料的機密性

在這裡插入圖片描述

  1. 數字簽名
    1. 對原始資料執行HASH演算法得到摘要值
    2. 傳送方用自已私鑰加密摘要值
    3. 將加密的摘要值與原始資料傳送給接收方

注:數字簽名保證資料完整性、身份驗證和不可否認

在這裡插入圖片描述

二、使用SSH客戶端程式

1. ssh命令

  用途:遠端安全登入、埠選項:-p  22
  格式:ssh  user@host
  
   ssh  root@20.0.0.15
   yes
   20.0.0.15的root密碼:123456
   whoami        #檢視本身是誰
   ifconfig      #檢視本身是哪個IP地址

在這裡插入圖片描述

2. scp命令

用途:遠端安全複製

格式1:scp user@host:file1 file2
格式2:scp file1 user@host:file2

   //格式1
   echo   "abc123" >a.txt          #本地生成一個a.txt檔案
   scp  /root/a.txt  root@20.0.0.15:/opt         #把本地的root目錄下的a.txt檔案拷貝到使用者
                                                   名為root的20.0.0.15ip地址的opt目錄下

在這裡插入圖片描述

在這裡插入圖片描述
2.1. 在20.0.0.15的opt目錄下建立檔案資訊,然後在去20.0.0.14上下載20.0.0.15的檔案

  // 格式2
 scp   root@20.0.0.15:/opt/1  /root     #拷貝20.0.0.15上的root賬戶下opt目錄下的1檔案,拷貝
                                          到本機的root目錄下

在這裡插入圖片描述

3. sftp命令

用途:安全FTP上下載
格式:sftp  user@host
注:sftp訪問的都是檔案的家目錄  

   sftp   root@20.0.0.15   #登入上20.0.0.15這個使用者的家目錄  

在這裡插入圖片描述
3.1. 在伺服器上建立檔案

cd  /home/fa         #進入家目錄
touch   ky07         #建立一個ky07檔案

在這裡插入圖片描述
3.2 在客戶機上測試

sftp   fa@20.0.0.15     #sftp訪問20.0.0.15的fa目錄,訪問進去直接進的是fa的家目錄

在這裡插入圖片描述

三、構建金鑰對驗證的SSH體系

  1. 在客戶機中建立金鑰對

    [zhangsan@server2 ~]$ ssh-keygen -t ecdsa
    
    Generating public/private ecdsa key pair.
    Enter file in which to save the key (/home/zhangsan/.ssh/id_ecdsa):    #預設儲存位置
    Created directory '/home/zhangsan/.ssh'.                
    Enter passphrase (empty for no passphrase):         #對金鑰進行設定密碼加密
    Enter same passphrase again:      #設定金鑰短語,再次輸入密碼,建議設定的時候謹慎
    Your identification has been saved in /home/zhangsan/.ssh/id_ecdsa.  #私鑰檔案位置
    Your public key has been saved in /home/zhangsan/.ssh/id_ecdsa.pub   #公鑰檔案位置
    
  2. 將公鑰檔案上傳至伺服器

    [zhangsan@localhost ~]$ scp ~/.ssh/id_ ecdsa.pub root@172.16.16.22:/tmp
                     拷貝   公鑰檔案位置      到root使用者ip地址的tmp目錄下
    
  3. 在伺服器中匯入公鑰文字

     mkdir  /home/lisi/.ssh/                                       #以mkdir的形式建立lisi,lisi是本身存在的
     cat  /tmp/id_ecdsa.put  >> /home/lisi/.ssh/authorized_keys    #把公鑰檔案的內容追加到lisi的.ssh目錄的authorized_keys檔案下
     tail  -1  /home/lisi/.ssh/authorized_keys                     #檢視檔案內容最後一行
    
  4. 客戶端使用金鑰對驗證登入

    [zhangsan@localhost ~]$ ssh lisi@172.16.16.22 #登入到lisi的家目錄下
    [lisi@localhost ~]$ whoami
    lisi
    

專案操作

  1. 在客戶機上建立使用者

     useradd  wangwu     #建立使用者
     passwd   wangwu     #設定密碼
    

在這裡插入圖片描述

  1. 生成金鑰

     [root@server1 ~]# su zhangwe       #切換到wangwu使用者
     [zhangwe@server1 root]$ ssh-keygen -t rsa    #生成金鑰的過程
     [zhangwe@server1 root]$ ls -lah    #檢視,許可權不夠
     [zhangwe@server1 root]$ exit       #退出
    

在這裡插入圖片描述

  1. 新增到組內,提升許可權

    sudo  /usr/bin/ls  -lah         #授權
    cd  /home/wangwu
    ls    -lah                      #檢視所有檔案包括有密碼的,隱藏的檔案
    

在這裡插入圖片描述

  1. 檢視生成的金鑰檔案
    在這裡插入圖片描述

  2. 將公鑰檔案上傳至伺服器

    scp  id_rsa.pub  root@20.0.0.15:/tmp     #拷貝公鑰到root使用者的客戶機ip地址是20.0.0.15的
                                               tmp目錄下
    

在這裡插入圖片描述

  1. 在伺服器(20.0.0.15)上去檢視

在這裡插入圖片描述

  1. 把檔案拷貝到使用者lisi上
    先建立使用者lisi,目錄
    在伺服器上

    [root@server3 tmp]# useradd lisi                  #建立使用者
    [root@server3 tmp]# mkdir /home/lisi/.ssh         #建立目錄
    [root@server3 tmp]# cat id_rsa.pub >> /home/lisi/.ssh/authorized_keys   #追加檔案內容
    [root@server3 tmp]# cat /home/lisi/.ssh/authorized_keys    #檢視檔案是否存在
    

在這裡插入圖片描述

  1. 測試
    客戶機(20.0.0.14)遠端登入伺服器(20.0.0.15)
    客戶端使用金鑰對驗證登入

     ssh   lisi@20.0.0.15             #用ssh遠端登入伺服器
    

在這裡插入圖片描述

相關文章