Linux中SSH遠程訪問及控制


目錄

 

一、SSH遠程管理

二、配置OpenSSHell服務器 

三、sshd服務兩種驗證

四、SSH客戶端程序

五、配置密鑰對驗證

六、免交互登錄

七、TCP Wrappers訪問控制

 

 

 

 

一、SSH遠程管理

1、SSH的概述

  • SSH是一種安全通道協議,主要用來實現字符界面的遠程登錄、遠程復制等功能
  • SSH協議對通信雙方的數據傳輸進行了加密處理,其中包括用戶登錄時輸入的用戶口令。因此SSH協議具有很好的安全性

  

 

  • SSH客戶端:Putty、Xshell、CRT
  • SSH服務器:OpenSSH
  • OpenSSH是實現SSH協議的開源軟件項目,適用於各種UNIX、Linux操作系統
  • Centos7 系統默認已安裝openssh相關軟件包,並已將sshd服務添加為開機自啟動
  • 執行“systemctl start sshd”命令即可啟動sshd服務
  • sshd服務默認使用的是TCP的22端口
  • sshd服務的默認配置文件是/etc/ssh/sshd_config

  ssh_config和sshd_config都是ssh服務器的配置文件,二者區別在於前者是針對客戶端的配置文件,后者則是針對服務端的配置文件

2、OpenSSH

  • 服務名稱:sshd
  • 服務端主程序:/usr/sbin/sshd
  • 服務端配置文件:/etc/ssh/sshd_config

二、配置OpenSSHell服務器

1、sshd_config配置文件的常用選項設置

vim /etc/ssh/sshd_config                   //服務端配置文件
#Port 22                       //監端口為22
#AddressFamily any                  //監聽地址為任意網卡,也可以指定Openssh服務器的具體ip
#LoginGraceTime 2m                  //登錄驗證時間為2分鍾
#PermitRootLogin yes                     //禁止root用戶登錄
#MaxAuthTries 6                     //最大重試次數為 6
#PermitEmptyPasswords no                   //禁止空密碼用戶登錄
#UseDNS no                         //禁用DNS反向解析,以提高服務器的響應速度
----------------------------------------------------------------------------------
//配置允許和禁止用戶登錄:加@表示限制ip,注意允許和禁止不要同時使用!!
AllowUsers zhangsan                 //允許zhangsan登錄(多個用戶以空格間隔)
AllowUsers zhangsan@192.168.80.80                   //只允許zhangsan通過192.168.80.80登錄
DenyUsers lisi                 //禁止lisi登錄

 

 

 三、sshd服務兩種驗證

1、密碼驗證

  對服務器中本地系統用戶的登錄名稱、密碼進行驗證。簡便,但可能會被暴力破解

2、密鑰對驗證

  要求提供相匹配的密鑰信息才能通過驗證。通常先在客戶端中創建一對密鑰文件(公鑰、私鑰),然后將公鑰文件放到服務器中的指定位置。遠程登錄時,系統將使用公鑰、私鑰進行加密/解密關聯驗證。能增強安全性,且可以免交互登錄

3、公鑰和私鑰的關系

  • 公鑰和私鑰是成對生成的,這兩個密鑰互不相同,可以互相加密和解密
  • 不能根據一個密鑰來推算出另一個密鑰
  • 公鑰對外公開,私鑰只有私鑰的持有人才知道
  • 當密碼驗證、密鑰對驗證都啟用時,服務器將優先使用密鑰對驗證。可根據實際情況設置驗證方式
vim /etc/ssh/sshd_config

PasswordAuthentication yes
//啟用密碼驗證

PubkeyAuthentication yes
//啟用密鑰對驗證

Authori zedKeysFile  .ssh/ authorized_keys
//指定公鑰庫文件

四、SSH客戶端程序

1、ssh遠程登錄

  ssh [選項] root@192.168.200.11

  • 當用戶第一次登錄SSH服務器時,必須接受服務器發來的ECDSA密鑰(根據提示輸入"yes")后才能繼續驗證
  • 接收的密鑰信息將保存到~/.ssh/known_hosts文件中。密碼驗證成功以后,即可登錄目標服務器的命令行環境中
// -p:指定非默認的端口號,缺省時默認使用22端口
ssh -p 10001 xx@192.168.200.11

2、scp遠程復制

下行復制
scp root@192.168.200.10:/etc/passwd /root/passwd10. txt
//將遠程主機中的/etc/passwd文件復制到本機

上行復制
scp -r /etc/ssh/root@192.168.200.10:/opt
//將本機的/etc/ssh目錄復制到遠程主機

3、sftp安全FTP

  由於使用了加密/解密技術,所以傳輸效率比普通的FTP要低,但安全性更高

  操作語法sftp與ftp幾乎一樣

sftp xx@192.168.200.10
Connecting to 192.168.200.10...

//輸入密碼

sftp> ls

sftp> get文件名
//下載文件到ftp目錄

sftp> put文件名
//_上傳文件到ftp目錄

sftp> quit

五、配置密鑰對驗證

1、客戶端創建密鑰對

  通過ssh-keygeni工具為當前用戶創建密鑰對文件。可用的加密算法為RSA、ECDSA或DSA等 ( ssh- keygen命令的“-t”選項用於指定算法類型)

useradd xx
echo "1234556"| passwd --stdin xx
Su - admin

ssh-keygen -t rsa

Generating public/private ecdsa key pair

Enter file in which to save the key (/home/admin/.ssh/id_rsa) :
//指定私鑰位置,直接回車使用默認位置

Created directory '/home/ admin/.ssh'
//生成的私鑰、公鑰文件默認存放在宿主目錄中的隱藏目錄.ssh/下

Enter passphrase (empty for no passphrase) :
//設置私鑰的密碼

Enter same passphrase again:
//確認輸入

1s -1 ~/.ssh/id_ ecdsa*
//id_ ecdsa是私鑰文件,權限默認為600; id_ ecdsa.pub是公鑰文件,用來提供給SSH服務器

 

 

 

 2、將公鑰文件上傳至服務器(兩種方法)

  方法一

scp ~/.ssh/ id_ecdsa.pub root@192.168.200.10:/opt

//在服務器中導入公鑰文本

mkdir .ssh

cat /opt/id_ecdsa.pub >> ~/.ssh/authorized_keys

cat .ssh/authorized_keys

  方法二

 cd ~/.ssh/
 
ssh-copy-id -i id_ecdsa.pub root@192.168.200.10
//此方法可直接在服務器的root用戶.ssh/目錄中導入公鑰文本

3、客戶端使用密鑰對驗證

ssh root@192.168.200.10

Enter passphrase for key '/home/root/.ssh/id_ecdsa':
//輸入私鑰的密碼

六、免交互登錄

ssh-agent bash
ssh-add
Enter passphrase for /root/.ssh/id_ecdsa:
//輸入私鑰的密碼

ssh root@192.168.200.10

七、TCP Wrappers訪問控制

1、TCP Wrappers (TCP封套 )

  將TCP服務程序“包裹”起來,代為監聽Tcp服務程序的端口,增加了一個安全檢測過程,外來的連接請求必須先通過這層安全檢測,獲得許可后才能訪問真正的服務程序

  大多數Linux 發行版,TCP Wrappers 是默認提供的功能(rpm -q tcp_wrappers)

2、TCP Wrappers 保護機制的兩種實現方式

  直接使用tcpd程序對其他服務程序進行保護,需要運行tcpd程序

  由其他網絡服務程序調用libwrap.so.*鏈接庫,不需要運行tcpd程序。此方式的應用更加廣泛,也更有效率。

  使用ldd命令可以查看程序的libwrap.so.*鏈接庫

ldd $ (which ssh)

3、TCP Wrappers的訪問策略

  • TCPWrappers機制的保護對象為各種網絡服務程序,針對訪問服務的客戶端地址進行訪問控制
  • 對應的兩個策略文件為/etc/hosts.allow和/etc/hosts.deny,分別用來設置允許和拒絕策略

  格式

  <服務程序列表>:<客戶端地址列表>

  服務程序列表

  • all:代表所有的服務
  • 單個服務程序:如:“vsftpd”
  • 多個服務程序組成的列表:如“vsftpd,sshd”

  客戶端地址列表

  • ALL:代表任何客戶端地址
  • LOCAL:代表本機地址

  多個地址以逗號分隔

  • 允許使用通配符“*" 和“?" ,前者代表任意長度字符,后者僅代表一個字符
  • 網段地址:如“192.168.80.*”或者192.168.208.0/255.255.255.0
  • 區域地址:如". benet.com"匹配benet.com 域中的所有主機

  TCP Wrappers機制的基本原則

  • 首先檢查/etc/hosts.allow文件, 如果找到相匹配的策略,則允許訪問
  • 否則繼續檢查/etc/hosts.deny文件,如果找到相匹配的策略,則拒絕訪問
  • 如果檢查上述兩個文件都找不到相匹配的策略,則允許訪問

  “允許所有,拒絕個別”
    只需在/etc/hosts.deny文件中添加相應的拒絕策略

  “允許個別,拒絕所有”
    除了在/etc/hosts.allow中添加允許策略之外,還需要在/etc/hosts.deny文件中設置"ALL:ALL"的拒絕策略

//只希望從IP地址為192.168.200.11的主機或者位於192.168.80.0/24網段的主機訪問sshd服務,其他地址被拒絕
vim /etc/hosts.allow
sshd:192.168.200.11,192.168.80.*

vim /etc/hosts.deny
sshd: ALL

 

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM