OpenSSH,一種用于遠端登入的應用程式;登入是指在一個系統中擁有在這個系統中運作的一個使用者的身份,當使用者滿足登入到這個系統的一個密碼時即可正常登入;為什麼要使用OpenSSH呢?
Telnet是一種遠端登入工具,他是系統自帶的,但是Telnet在資料傳輸過程當中是以明文的形式傳輸的,這樣就很容易被有心人抓包破解重要資訊;而OpenSSH這種遠端登入程式,他的所有傳輸過程都是加密的過程;這樣就加大了中間人攻擊的難度,它可以動态的設定加密密碼,如dsa,rsa,ecdsa等;
SSH有兩個版本,一個是SSH V1,一個是SSH V2;但是SSH V1在運作環節出現了很多嚴重的問題,是以一般不會有人去使用,如果一意孤行去使用,中間出新問題也隻能自己去承擔,支援使用的是V2版本的;SSH遠端登入有兩種方式,一種是基于密碼的認證,即根據使用者密碼登入,一種是基于密鑰對的形式,由用戶端生成一對密鑰對,私鑰儲存在用戶端;将公鑰發送給伺服器中的某個使用者的家目錄中;當用戶端要登入到伺服器中的使用者時,伺服器通過公鑰解密資料判斷資料來源,來源正确則登入;
SSH密碼認證:
ssh指令:
ssh [options]...[user@]hostname [command]
常用選項:
-l user:指定此次使用哪個使用者進行遠端登入;,如果使用了此選項,則ssh
指令中的主機名前面的使用者名需要省略;若如果沒有使用-l選項指定使用者,又沒有 在主機名前面加上使用者名,則ssh用戶端程式預設使用本地主機目前登入的使用者的用 戶名作為此次登入的使用者名;
-p port:指名用于通路遠端伺服器的目标端口号
執行個體:
處于centos7環境下的終端,經過遠端登入指令ssh登入到了centos6.7的終端,可以看到的是,當 我們第一次遠端登入時,他會讓我們确認一下是否登入,下一次再登入時,就隻需要輸入使用者密碼即 可;如:
我們還可以是用這種方式進行遠端登入:
SSH密鑰對驗證:
由用戶端生成一對密鑰,私鑰由用戶端保管,公鑰發往伺服器某個使用者的家目錄下;當遠端登入 時,通過公鑰驗證用戶端資訊;
1.建立密鑰對:
ssh-keygen:
-b bits:不同加密算法擁有不一樣的密鑰位元組要求,如
RSA:最少768bits,預設2048bits;
DSA:明确指定1024bits;
ECDSA:256bits,384bits,521bits;
ED25519:忽略-b指定的長度;
-t:指定加密算法的類型;如rsa,dsa,ecdsa等;
-f filepath:指定密鑰對存放的路徑;
-P:設定私鑰密碼;可以在指令行設定,也可以在指令啟動後,互動設定;
id_rsa.pub即為公鑰;将其複制到伺服器的某個使用者的家目錄下;通過ssh-copy-id指令;
ssh-copy-id:将密鑰檔案複制到另一個伺服器中的使用者
常用選項:
-i:指定密鑰路徑;
-p port:指定連接配接到的伺服器端口;
執行個體:
在centos6.7,即[email protected]下,wjq這個使用者的家目錄下會産生一個.ssh的檔案,裡面 儲存的就是用戶端發往伺服器的公鑰;
當完成上述操作後,用戶端就可以基于密鑰對的形式登入到伺服器端了;
scp:可以将用戶端與遠端主機之間建立資料傳輸;
兩種使用情形:
推送:把我們的東西給别人
scp [option]... SRC HOST:/PATH/TO/DEST(将本地主機的SRC檔案,傳送到遠端主機的DEST目錄下) 拉取:把别人的東西拿過來
scp [option]...HOST:/PATH/TO/DEST SRC(将172.16.72.1主機的DEST檔案放到本地主機的SRC目錄下)
常用選項:
-r:遞歸複制,複制目錄内容;
-p:保留原檔案的權限資訊;
-q:靜默模式;不輸出任何資訊;
-P port:指明遠端主機ssh協定監聽的端口;
執行個體:将用戶端的文本檔案a傳送到172.16.72.5下的wjq這個使用者的家目錄
172.16.72.5/home/wjq:
若想更改配置資訊的話,可以配置檔案/etc/ssh/ssh_config中更改,也可以在指令行中直接引用,如消去第一次登入時嚴格的認證;
其格式:
HOST pattern
OPTION1 VALUE
OPTION2 VALUE
如:
基于伺服器端口的配置檔案/etc/ssh/sshd_config
在該配置檔案下,修改關于伺服器的配置,對伺服器所需要具備的功能作出調整;
配置檔案的格式:
配置指令 值
常用配置指令:
Protocol 2:選擇SSH協定版本,通常為V2;
Port 22:SSH服務要監聽的服務端口,通常在生産環境中SSH服務的監聽端口都不為22,這樣 就可以避免一些惡意破壞;
PermitRootLogin yes:是否允許用戶端以root使用者身份登入,可以以普通使用者的身份登入, 在進行root轉換,通常為no;
ListenAddress 0.0.0.0:指明SSH服務要監聽IP位址;
MaxAuthTries 6:密碼輸錯次數;
UseDNS yes:是否允許使用DNS反向解析主機名;
AllowUsers user1 user2...:設定登入使用者的白名單,明确規定隻允許哪些使用者進行遠端登 錄;
AllowGroups group1 group2...:設定組的白名單;
DenyUsers user1 user2...:設定登入使用者的黑名單,明确規定隻允許哪些使用者進行遠端登 錄;
DenyGroups group1 group2...:設定組的黑名單;
在修改配置檔案之後,為使得配置檔案生效,必須将配置檔案重新開機;
在CentOS7中systemctl reload sshd.service
在CentOS5,6中service sshd reload
綜上所述,如何最好的實作ssh服務:
1.不要使用root登入;
2.一定要使用密碼的方式登入時,密碼設複雜點;
3.最好使用密鑰對登入;
4.不要使用V1協定;
5.IP位址的監聽要監聽特定的IP位址,不要是0.0.0.0;
6.Port端口不要是22;
7.設定黑白名單;
8.設定空閑會話的逾時時長;
9.做好日志;
10.設定ssh的通路頻度;
11.禁止使用空密碼;
dropbear:作為SSH的另一種表現形式,也具有遠端登入的功能,是一種輕量級的實作方案,多用于 嵌入式環境;
dropbear程式在系統中是沒有的,需要我們自己手動編譯安裝;
編譯安裝的步驟:
1.首先上網下載下傳一個dropbear的源代碼包,并使用tar -xf指令解壓;
2.進入源代碼包,cd 源代碼包;
3.執行./configure生成makefile檔案;
4.執行過程中出錯,我們需要安裝一個小程式,zlib-devel;使用yum安裝即可;
5.安裝完後重新執行./configure
6.執行make指令,當需要部分功能時,可編譯一部分代碼,如
隻編譯三個功能;
7.執行make install指令,若隻編譯了上述三個功能,則在其後加一個install繼續執行即可;
8.安裝成功,可使用dropbear -h驗證是否成功;
dropbear的使用:
dropbear可以通過交換密鑰的方式建構出遠端伺服器與用戶端主機的橋梁;但dropbear的使用必需先建立三個dropbear的配置檔案用來存放密鑰,分别是:
dropbear_rsa_host_key
dropbear_dss_host_key
三個配置檔案分别針對于rsa,dss,ecdsa;
現在/etc下建立一個dropbear目錄,用于存放這三個檔案;
如:
啟動dropbear:
-p IP:port:設定目前伺服器IP,并将dropbear遠端通路的端口列出;
-F:使dropbear應用程式運作在前台,可觀察到有哪些用戶端登入登出伺服器;
-E:将dropbear服務程序運作期間産生的資訊從标準錯誤輸出而不是寫入到系統日志檔案 (/var/log/message)
-w:不能使用root使用者進行登入,但登入後可切換;
在另一台用戶端主機,要想連接配接到已經啟動dropbear的伺服器端口就要使用如下指令
~]#ssh -p port user@host
當用戶端進行登入後,就會在伺服器端的前台界面下出現一條記錄,表示該使用者登入到服務 器,當用戶端退出時,伺服器這邊還是會有用戶端退出的記錄;
本文轉自 wujunqi1996 51CTO部落格,原文連結:http://blog.51cto.com/12480612/1955251