Linux服務器ssh遠程管理


SSH遠程管理
linux

SSH(Secure Shell)是一種安全通道協議,主要用來實現字符界面的遠程登錄,遠程複製等功能。SSH協議對通訊雙方的數據傳輸進行了加密處理,其中包括用戶登錄時輸入的用戶口令,與早期的telnet(遠程管理),rsh(Remote Shell ,遠程執行命令),rcp(遠程複製文件)等應用相比,SSH協議提供了更好的安全性。算法

 

  1. 配置OpenSSH服務端數據庫

在RHEL 5系統中,OpenSSH服務器由openssh,openssh-server等軟件包提供(默認已安裝),並已將sshd添加爲標準的系統服務。執行"service sshd start"命令便可按默認配置啓動sshd服務,包括root在內的大部分用戶(只要擁有合法的登錄Shell)均可以遠程登錄系統。windows

Sshd服務的配置文件默認位於/etc/ssh/sshd_config,正常調整相關配置項,能夠進一步提升sshd遠程登錄的安全性。下面介紹最經常使用的一些配置項,關於sshd_config文件的更多配置可參考man手冊頁。安全

1. 服務監聽選項服務器

    Sshd服務使用的默認端口好爲22,必要時建議修改此端口號,並指定監聽服務的具體ip地址,以提升在網絡中的隱蔽性,除此以外,SSH協議的版本選用V2比V1的安全性更好,禁用DNS反向解析能夠提升服務器的響應速度。網絡

修改配置文件後須要從新加載文件:service sshd reloadapp

服務器默認配置以下ssh

2.用戶登錄控制工具

    Sshd服務默認容許root用戶登錄,當在linternet中使用時這是很是不安全的,更廣泛的作法是,先以普通用戶遠程登入,進入安全Shell環境後,根據實際須要使用su命令切換爲root用戶。

    關於sshd服務的用戶登錄控制,一般應禁止root用戶或密碼爲空的用戶登錄,另外能夠限制登陸驗證的時間(默認爲2分鐘)和最大重試次數,若超過限制後仍未能登錄則斷開鏈接。

    當但願之容許或禁止某些用戶登錄時,可使用AllowUsers或DenyUsers配置,二者用法相似(注意不要同時使用)。例如:若只容許jerry和admin用戶登錄,而且admin用戶僅可以從ip地址爲61.23.24.25的主機遠程登錄,能夠參考如下操做。

AllowUsers jerry admin@61.223.24.25 //多個用戶以空格分隔

 

3.    登錄驗證方式

    對於服務器的遠程管理來講,除了用戶帳號的安全控制之外,登錄驗證的方式也很是重要,sshd服務支持兩種驗證方式——密碼驗證,密鑰對驗證。能夠設置只使用其中以正方式,也能夠兩種方式都啓用。

  • 密碼驗證:以服務器中本地系統用戶的登陸名稱,密碼進行驗證。這種方式使用最爲簡便,但衝客戶機角度來看正在鏈接的服務器有可能被冒充,從服務器角度看當遭遇密碼窮舉(暴力破解)攻擊時防護能力比較弱。

  • 密鑰對驗證:要求提供相匹配的密鑰信息才能經過驗證,一般先在客戶機中建立一對密鑰文件(公鑰,私鑰),而後將公鑰文件放到服務器中的指定位置,遠程登錄時,系統將使用公鑰,私鑰進行加密/解密關聯驗證,大大加強了遠程管理的安全性。

    當加密驗證,密鑰對驗證都啓用時,服務器將優先使用密鑰對驗證。對於安全性要求比較高的服務器,建議將密碼驗證方式禁用,只容許密鑰對驗證方式;若沒有特殊要求,則兩種方式均可以啓用。

 

Service sshd reload 一樣須要從新加載配置文件便可生效。

5.1.2     使用SSH客戶端程序

    在RHEL 5系統中,OpenSSH客戶端由openssh-cliente軟件包提供(默認已安裝),其中包括ssh遠程登陸命令,以及scp,sftp遠程複製和文件傳輸命令等,實際上,任何支持SSH協議的客戶端程序均可以與OpenSSH服務器進行通訊,例如:windows平臺中的PuttyCN,WinSCP,SecureCRT等圖形工具。

注意:若是默認端口22被改成其它端口,使用時應以上選項指定端口號。

  1. 命令程序ssh ,scp ,sftp

1)ssh遠程登錄

    經過ssh命令能夠遠程登陸到sshd服務,爲用戶提供一個安全的Shell環境,以便對服務器進行管理和維護。使用時應指定登錄用戶,目標主機地址做爲參數。例如:若要登錄主機192.168.4.254,以對方的tsergyia用戶進行驗證,能夠執行如下操做。

Ssh tsergyia@192.168.4.254

Yes //接受密鑰

123456 //輸入用戶密碼

    當用戶第一次登陸SSH服務器時,必須接受服務器發來的RSA密鑰(根據提示輸入yes)後才能繼續驗證,接收的密鑰信息將保存到~/.ssh/known_hosts文件中(保存在客戶機中),密鑰驗證成功之後,就登錄到目標服務器的命令環境中了,就比如把客戶機的顯示器,鍵盤鏈接到服務器上同樣。

Whoami //確認當前用戶

/sbin/ifconfig eth0 //確認是不是服務器ip地址

    若是sshd服務器使用了非默認的端口號(如2345),則在登陸時必須經過"-p"(小寫)選項指定端口號。例如:一下操做將訪問主機192.168.4.22的2345端口,以對方爲jerry用戶驗證登陸。

Ssh -p 2345 jerry@192.168.4.22

 

2)scp遠程複製

    經過scp命令能夠利用SSH安全鏈接與遠程主機相互複製文件,使用scp命令時,除了必須指定複製源,目標之外,還應指定目標主機地址,登陸用戶,執行後提示驗證口令便可。例如:如下操做分別演示了下行,上行復制的操做過程,將遠程主機中的/etc/passwd文件複製到本機,並將本機的/etc/vsftpd/目錄複製到遠程主機。

下行:Scp root@192.168.4.254:/etc/passwd(源) /root/pwd254.txt(目的)

注意:目標主機用戶root(要容許ssh登陸),(注意root用戶要有讀取權限)

上行:scp -r(目錄) /etc/vsftpd/(源) root@192.168.4.254:/opt/(目的)

注意:用戶仍是遠程主機用戶,要能有寫入權限

 

3)sftp安全FTP

    經過sftp命令能夠利用SSH安全鏈接與遠程主機上傳,下載文件,採用了與FTP相似的登陸過程和交互式環境,便於目錄資源管理。例如:如下操做依次演示了sftp登陸,瀏覽,文件上傳等過程。

Sftp root@192.168.4.244 //登錄

Ls //查看(遠程主機)

!ls //查看(bending客戶機)

Put(或mput) /boot/config-2.3.18-194.el5 //上傳文件

Get(或mget)                              //下載文件

Bye                                             //退出

 

  1. 圖形工具PuttyCN,WinSCP

1)PuttyCN遠程登錄

    Putty是一款瓶蓋的Telnet/SSH圖形客戶端軟件,可以在windows 32平臺模擬xterm終端環境,主要做品爲Simon Tatham,PuttyCN是對應的中文版。

    使用PuttyCN時,只需運行主程序putty.exe,而後再窗口中指定遠程主機的ip地址,端口號等相關信息,以下圖所示,再單擊"打開"按鈕,根據提示接受密鑰,驗證密碼後便可成功登陸到目標主機。

步驟一:輸入目標服務器的ip地址,端口號鏈接類型,點擊"打開"

步驟二:在彈出的窗口中單擊"是",表示接受密鑰

步驟三:輸入遠程服務器的用戶名和密碼,驗證成功後便可登陸。

 

2)WinSCP遠程複製

    Winscp是一款用於widnows平臺的SSH圖形客戶端軟件,用來經過SCP,SFTP方式在本地與遠程計算機之間安全的複製文件。WinSCP的官方網站位於http://winscp.net,建議下載.zip格式的免安裝包。

    使用WinSCP時,只須要運行主程序WinSCP.exe。而後在窗口中指定遠程主機的ip地址,端口號等相關信息,以下圖所示,再單擊"登陸"按鈕,根據提示接受密鑰,驗證密碼後便可成功鏈接到目標主機,操做界面與常見的FTP客戶軟件相似。

    因爲PuttyCN,WinSCP都提供了中文界面,功能和操做比較簡單,所以這裏再也不對着兩款軟件作深刻研究。

 

5.1.3 構建密鑰對驗證的SSH體系

    正如前面所說起的,密鑰對驗證方式能夠爲遠程登陸提供更好的安全性,下面將學習在linux服務器,客戶端中構建密鑰對驗證SSH體系的基本過程,如圖所示。

  1. 在客戶端建立密鑰對

    在linxu客戶機中,經過ssh-keygen工具爲當前用戶建立密鑰對文件,可用的加密算法爲RSA或DSA("ssh-keygen"命令的"-t"選項用於指定算法類型)。例如:以zhangsan用戶登陸到客戶機,並生成基於RSA算法的SSH密鑰對(公鑰。私鑰)文件,操做以下:

    Ssh-keygen -t rsa

    ---------------------------------.//指定私鑰位置

    --------------------------------//設置私鑰短語

    -------------------------------//確認所設置的短語

        上述操做過程當中,提示指定私鑰文件的存放位置時,通常直接按Enter鍵便可,最後生成的私鑰,公鑰文件默認存放在宿主目錄中的隱藏文件夾.ssh/下,私鑰短語用來對私鑰文件進行保護,當使用該私鑰驗證登陸時必須正確提供此處所設置的短語。儘管不設置私鑰短語也是能夠的(實際無口令登錄),但從安全假賭考慮不建議這麼作。

    Ls -lh ~/.ssh/id_rsa* //確認生成的密鑰文件

    新生成密鑰對文件中,id_rsa是私鑰文件,權限默認爲600,對於私鑰文件必須妥善保管,不能泄露給他人,id_rsa.pub是公鑰文件,用來提供給SSH服務器。

2.將公鑰文件上傳至服務器

將上一步的公鑰文件發送給服務器,並部署到服務器端用戶的公鑰數據庫中。上傳公鑰文件時能夠選擇FTP,samba,HTTP甚至發送E-mail等任何方式,例如:能夠經過scp方式將文件上傳至服務器的/tpm/目錄中。

Scp ~/.ssh/id_rsa.pub root@192.168.4.254:/tmp/(用戶可以登錄ssh)

3.在服務器中導入公鑰文本

    在服務器中,目標用戶(指用來遠程登陸的帳號)的公鑰數據庫位於~/.ssh/目錄,默認的文件名是authorized_keys。當得到客戶機發送過來的公鑰文件之後,能夠經過重定向將公鑰文本內容追加到目標用戶的公鑰數據庫中。

權限更改:chown lisi:lisi .ssh/

            Chmod 700 .ssh/

    在公鑰庫authorized_keys文件中,最關鍵的內容是"ssh-rsa加密字串"部分,當導入非ssh-keygen工具建立的公鑰文本時,應確保此部分信息完整。

    因爲sshd服務默認採用嚴格的權限測試模式,所以還須要注意公鑰庫文件authorized_keys的權限——要求是登陸的目標用戶或root,同組或其餘用戶對該文件不能有寫入權限,不然可能沒法成功使用密鑰對驗證

    除此以外,應該確認sshd服務支持密鑰對驗證方式,具體參考上述登陸驗證方式設置。

還有一種方法:

    在客戶機操做

    端口必須爲22,操做完之後能夠更改。

ssh-copy-id -I /root/.ssh/id_rsa.pub zhangsan@192.168.4.254

註釋:意思是zhangsan用戶也用lisi在客戶機上生成的(公鑰和私鑰)登陸同一臺服務器,可以使用此方式。

 

4.在客戶端使用密鑰對驗證

當私鑰文件(客戶端),公鑰文件(服務器)均部署到位之後,就能夠在客戶機中進行測試了,首先確認客戶機中當前的用戶爲zhangsan,而後經過ssh命令以服務器端用戶lisi的身份進行遠程登陸,若是密鑰對驗證方式配置成功,則在客戶端將會要求輸入私鑰短語,以便調用私鑰文件進行匹配(若未設置私鑰短語,則直接登入目標服務器)

使用密鑰對驗證的方式登陸時,不須要知道目標用戶的密碼,而是改成驗證客戶端用戶的私鑰短語並檢查雙方的私鑰,公鑰文件是否配對,安全性更好。

 

 

  1. TCP Wrappers訪問控制

TCP Wrappers機制的保護對象爲各類網絡服務程序,針對訪問服務的客戶機地址進行訪問控制,對應的兩個策略文件爲/etc/hosts.allow,/ect/deny,分別用來設置容許和拒絕的策略。

 

  1. 策略的配置格式

    兩個策略文件的做用相反,但配置記錄的格式相同,以下所示。服務程序列表,客戶機地址列表之間以冒號分割,在每一個列表內的多個項之間以逗號分隔。

    1. 服務程序列表

  • ALL,表明全部的服務

  • 單個服務程序。例如:"vsftpd"

  • 多個服務程序組成的列表,例如"vsftpd , sshd"

  1. 客戶機地址列表

  • All,表明任何客戶機地址

  • Local,表明本地地址

  • 單個ip地址,例如:"192.168.4.1"

  • 網絡地址,例如:192.168.4.0/255.255.255.0或192.168.4.

  • 以"."開始的域名,例如".benet.com"匹配benet.com域中的全部主機

  • 潛入通配符"?"號表明一個字符 *表明多個字符

 

  1. 訪問控制的基本原則

關於TCP Wrappers機制的訪問策略,應用時遵循如下順序和原則

  • 首先檢查/etc/hosts.allow文件,若是找到匹配的策略,則容許訪問。

  • 不然則繼續檢查/etc/hosts.deny文件,若是找到相匹配的策略,則拒絕

  • 若是檢查上述兩個文件都找不到相匹配的策略,則容許。

  • 若是連個文件中都匹配,hosts.allow生效

 

  1. TCP Wrappers 配置實例

例如:若只但願從ip地址爲61.23.24.25的主機或者位於192.168.2.0/24網段的主機訪問sshd服務,其餘全部地址將被拒絕,能夠執行如下操做。

Vim /etc/hosts.allow

Sshd:61.23.24.25,192.168.2.*

Vim /etc/hosts.deny

Sshd:ALL

 

補充:在windows 7系統中安裝PuttyCN客戶端,並使用密鑰對驗證的方式登陸遠程的SSH服務器(密鑰轉換)

步驟一:使用winscp工具將私鑰複製到win 7上

步驟二:使用puttygen工具轉換私鑰——load——在文檔中*.*——save private key

步驟三:putty登陸——在左側ssh中——auth——選擇私鑰文件——open

步驟四:輸入用戶名登陸

相關文章
相關標籤/搜索