SSH 配置
SSH
批量管理
SSH介紹
SSH是Secure Shell Protocol的簡寫,由IETF網(wǎng)絡(luò)工作小組(Network working Group)指定;在進行數(shù)據(jù)傳輸之前,SSH先對聯(lián)機數(shù)據(jù)包通過加密技術(shù)進行加密處理,加密后在進行數(shù)據(jù)傳輸。確保了傳遞的數(shù)據(jù)安全
SSH是專為遠程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供的安全性協(xié)議。利用SSH協(xié)議可以有效的放置遠程管理過程中的信息泄露問題,在當前的生產(chǎn)環(huán)境運維工作中,絕大多數(shù)企業(yè)普遍采用SSH協(xié)議服務(wù)來代替?zhèn)鹘y(tǒng)的不安全的遠程聯(lián)機服務(wù)軟件,如telnet(23端口,非加密)?
在默認狀態(tài)下,SSH服務(wù)主要提供了兩個服務(wù)功能,一個是提供類似Telnet遠程聯(lián)機服務(wù)器的服務(wù),即上面提到的SSH服務(wù);另一個是類似FTP服務(wù)的sftp-server,借助SSH協(xié)議來傳輸數(shù)據(jù)的,提供更安全的SFTP服務(wù)(vsftp,proftp)
SSH客戶端(SSH命令)還包含一個遠程安全拷貝命令scp,也是通過ssh協(xié)議工作?
ssh小結(jié)
1、SSH是安全的加密協(xié)議,用于遠程連接linux服務(wù)器?
2、SSH默認端口是22,安全協(xié)議版本SSH2,除了2之外還有SSH1(漏洞)?
3、SSH服務(wù)端主要包含兩個服務(wù)協(xié)議SSH遠程連接,SFTP服務(wù)?
4、Linux SSH客戶端包含ssh遠程連接命令,以及遠程拷貝scp命令
SSH結(jié)構(gòu)
SSH服務(wù)由服務(wù)端軟件OpenSSH (openssl)和客戶端(常見的有SSH(linux),SecureCRT,Putty,Xshell)組成,SSH服務(wù)默認使用22端口提供服務(wù),它有兩個不兼容的SSH協(xié)議版本分別是1.x和2.x檢查安裝SSH
OpenSSH同時支持SSH?1.x和2.x?用SSH 2.x的客戶端程序不能鏈接到SSH1.x的服務(wù)程序上
SSH服務(wù)是一個守護進程(daemon),他在后臺運行并響應(yīng)來自客戶端的連接請求,SSH服務(wù)端的進程名為sshd,負責(zé)實時監(jiān)聽遠程SSH客戶端的連接請求,并進行處理,一般包括公共密鑰認證、密鑰交換、對稱密鑰加密和非安全連接等。
SSH客戶端包含ssh以及像scp(遠程拷貝)slogin(遠程登錄)sftp(安全FTP文件傳輸)等應(yīng)用程序
SSH的工作機制大致是本地的ssh客戶端發(fā)送一個連接請求到遠程的ssh服務(wù)器,服務(wù)器檢查連接的客戶端發(fā)送的數(shù)據(jù)包和ip地址,如果確認合法,就會發(fā)送密鑰給SSH的客戶端,此時,客戶端本地再將密鑰發(fā)回給服務(wù)端,自己建立連接。SSH1.x和SSH2.x在連接協(xié)議上有一些安全方面的差異
SSH加密技術(shù)
SSH加密技術(shù)是將人類可以看得懂的數(shù)據(jù),通過一定的特殊的程序算法,把這些數(shù)據(jù)變成雜亂的無意義的信息,然后,通過網(wǎng)絡(luò)進行傳輸,二擋到了目的地后,在通過對應(yīng)的解密算法,把傳過來的加密的數(shù)據(jù)信息解密成加密前的可讀取的正常數(shù)據(jù)。因此,當數(shù)據(jù)在互聯(lián)網(wǎng)上傳輸時即使被有心的黑客監(jiān)聽竊取了,也很難獲取到真正需要的數(shù)據(jù)?
網(wǎng)絡(luò)上的數(shù)據(jù)包加密技術(shù)一般是通過所謂的一對公鑰和私鑰(Public key and Pivate key)組合撐的密鑰對進行加密與解密操作。?
SSH 1.x?
每一臺SSH服務(wù)器主機都可以使用RSA加密方式來產(chǎn)生一個1024-bit的RSA Key 這個RSA的加密方式就是用來產(chǎn)生公鑰和私鑰的算法之一。?
當服務(wù)啟動時,就會產(chǎn)生一個768 bit的臨時公鑰存放在Server中
SSH 2.x?
在SSH 1.x的聯(lián)機過程中,當Server接收Clinet端的Private Key后,就不再針對該次聯(lián)機的Key pair進行檢驗。若此時有而已黑客對該聯(lián)機key pair插入而已的程序代碼時,由于服務(wù)端你不會在檢驗聯(lián)機的正確性,因此可能會接收該程序代碼,從而導(dǎo)致系統(tǒng)被黑?
為了改正這個缺點,SSH version2多加了一個確認聯(lián)機正確性的Diffie-Hellman機制?
在每次數(shù)據(jù)傳輸中,Server都會以該機制檢查數(shù)據(jù)的來源是否正確,這樣,可以避免聯(lián)機過程中被插入而已程序代碼的問題?
另外,SSH2同時支持RSA和DSA密鑰,但是SSH1僅支持RSA密鑰?
由于SSH1協(xié)議本身存在較大問題,建議使用SSH2的聯(lián)機模式?
當Client端SSH聯(lián)機請求傳送過來時,Server就會將這個768-bit的公鑰傳給Client端?
此時Client會將此公鑰與先前存儲的公鑰進行對比,看是否一致,判斷標準是Client端聯(lián)機用戶目錄下~/.ssh/known_hosts文件的內(nèi)容(linux-客戶端)?
不加用戶默認是root?不加-p?指定端口 默認是22
不加賬戶默認是root
連接密碼文件存放路徑
如何防止SSH登錄入侵:
1、用密鑰登錄,不用密碼登錄?
2、牤牛陣法:解決SSH安全問題?
3、防火墻封閉SSH,指定源限制(局域網(wǎng),信任公網(wǎng))?
4、開啟SSH只監(jiān)聽本地內(nèi)網(wǎng)IP(ListenAddress 10.0.0.8)?
5、盡量不給服務(wù)器外網(wǎng)IP
遠程連接SSH服務(wù)
ssh基本使用語法?
ssh -p52113 oldboy@172.16.1.1?
1. 連接遠程主機命令的基本語法?
2.?-p小寫接端口,默認22端口時可以省略-p22?
3.?-@?前面為用戶名,如果當前用戶連接,可以不指定用戶?
4.?@后面為要連接的服務(wù)器的IP
密鑰存儲路徑
如果端口已修改為特殊端口,那么用上面命令連接就會發(fā)生問題
保存的結(jié)果可能為:?
1、no route to hosts?可能為防火墻?
2、Connection refused?可能是防火墻,可能是連接端口錯誤
遠程執(zhí)行命令(最好全路徑)?ssh -p 22 root@10.0.0.1 /sbin/ifconfig
SSH小結(jié):
1、切換到別的機器上?ssh -p52113 user@ip?
2、到其他機器執(zhí)行命令(不會切到機器上)?ssh -p 52113 user@ip?命令?
3、當?shù)谝淮蜸SH連接的時候,本地會產(chǎn)生一個密鑰文件~/.ssh/known_hosts
SSH客戶端附帶的遠程拷貝scp命令
scp的基本語法使用:scp -sercure copy?(remote file copy program)?
推?PUSH?
scp -P22 -rp /tmp/oldboy oldboy@10.0.0.1:/tmp?
拉?PULL
參數(shù):?
#→ -P(大寫)接接口,默認22 可以省略?
#→-r 遞歸,表示拷貝目錄?
#→-p 表示在拷貝前后保持文件或目錄屬性?
# -l 限制速度
scp 知識小結(jié):
1、scp是加密的遠程拷貝,而cp僅為本地拷貝?
2、可以把數(shù)據(jù)從一臺機器推送到另一臺機器,也可以從其他服務(wù)器把數(shù)據(jù)拉回到本地執(zhí)行命令的服務(wù)器?
3、每次都是全量完成拷貝,因此效率不高,適合第一次拷貝用,如果需要增量拷貝,用rsync
ssh服務(wù)附帶的sftp功能服務(wù)
windows客戶端和linux服務(wù)器之間傳輸數(shù)據(jù)工具:
1) rz、sz(lrzsz)?
2) winscp WinSCP-v4.0.5 基于SSH,sftp?
3) SFX(xshell) 4) SFTP 基于SSH加密傳輸?
5) samba,http,ftp,nfs?
FTP工具:vsftp、proftpd、SFTP
linux sftp客戶端連接sftp服務(wù)方法
登錄FTP的方法就是sftp oldboy@10.0.0.1?如果ssh端口為52113,則命令如下
#還可以像命令行那些切換目錄
SSH服務(wù)認證類型介紹
基于口令的安全驗證:
基于口令的安全驗證的方式就是大家現(xiàn)在一直在用的,只要知道服務(wù)器的SSH端口號和口令,應(yīng)服務(wù)器的IP及開放的端口,默認都為22,就可以通過ssh客戶端登錄到主機,此時聯(lián)機過程中所有傳輸都是加密的
基于密鑰的安全驗證:
基于密鑰的安全驗證方式是指,需要依靠密鑰,也就是必須事先建立一對密鑰,然后把公用密鑰(Publickey)放在需要訪問的目標服務(wù)器上,另外,個還需要把私有密鑰(Private key)放到SSH客戶端或?qū)?yīng)的客戶端服務(wù)器上
此時,如果要想連接到這個帶有公用密鑰的SSH服務(wù)器,客戶端SSH軟件或者客戶端端服務(wù)就會想SSH服務(wù)端發(fā)出請求,請求用聯(lián)機用戶密鑰進行安全連接。SSH服務(wù)會在收到請求之后,會現(xiàn)在改SSH服務(wù)器上連接的用戶的加密路下 放上去的對應(yīng)用戶密鑰,然后把它和連接的SSH客戶端發(fā)來進行密鑰,如果兩個密鑰一直SSH服務(wù)就會用公用密鑰加密“質(zhì)詢”(challenge)并把它發(fā)送給SSH客戶端?
更改ssh默認登錄配置
修改SSH服務(wù)的運行參數(shù),是通過修改配置文件/etc/ssh/sshd_config實現(xiàn)的?
一般來說SSH服務(wù)使用默認的配置已經(jīng)夠很好的工作,如果對安全要求不高,僅僅提供SSH服務(wù)的情況不需要修改任何配置?
sshd_config配置文件說明:?
優(yōu)化SSH配置文件選項
SSH遠程連接服務(wù)慢的解決方案
準備工作
優(yōu)化SSH
sed -i ’13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords?
no\nUseDNS no\nGSSAPIAuthentication no’ /etc/ssh/sshd_config
檢查houst解析
實驗步驟
#ssh-keygen是生產(chǎn)密鑰的工具 -t參數(shù)是指定密鑰的類型,這里是建立dsa類型密鑰?
#也可以使用ssh-keygen -t?rsa來建立rsa類型密鑰?
#RSA與DSA加密算法的區(qū)別?
#RSA:是一種加密算法(PS:RSA也可以進行數(shù)字簽名的)它的簡寫的來由是RonRivest、Adi Shamir和LeonAdleman 這三個姓氏加在一起就是RSA?
#DSA就是數(shù)字簽名算法的英文全稱的簡寫,即Digital Sigenature Algorithm=DSA?
RSA既可以進行加密,也可以進行數(shù)字簽名實現(xiàn)認證,而DSA只能用于數(shù)字簽名
腳本分發(fā)密鑰
一鍵產(chǎn)生密鑰對:
[oldboy@web01 .ssh]$ssh-copy-id -i id_dsa.pub oldboy@10.0.0.41?
ssh-copy-id?只能發(fā)公鑰,不能發(fā)私鑰?
-i?代表發(fā)送的文件 代表默認發(fā)送(端口22情況)
代表改變端口-p 后面加上修改后的端口即可
SSH免密碼登錄小結(jié):
1)免密碼登錄是單向的,方向從私鑰(鑰匙)==》公鑰(鎖)?
2)SSH免密碼登錄基于用戶的,最好不要跨不同的用戶?
3)ssh連接慢的問題解決
例子:將本地hosts發(fā)送給指定的ip
第一種?sudo?提權(quán)實現(xiàn)沒有權(quán)限用戶拷貝
第二種?利用suid實現(xiàn)沒有權(quán)限用戶拷貝(了解即可,不建議使用)
第三種?使用root進行操作?
rsync使用
1、可以增量備份?
2、使用ssh隧道加密傳輸
常用連接介紹:
發(fā)送文件腳本
查看對方系統(tǒng)版本
[oldboy@web01 ~]$ sh view.sh “iostat”?查看系統(tǒng)中的IO
批量分發(fā)文件:(housts)
腳本內(nèi)容
另一種方法:
控制不輸入任何命令進行操作
腳本內(nèi)容
expect語言 解決非交互式輸入密碼的問題?
yum -y install expect?默認不存在需要安裝
ssh+rsync+sersync簡單易用?
Saltstack?
pupet?大網(wǎng)站用?
ansible?(不需要客戶端)?
cfengine?(已淘汰)
SSH批量管理步驟:
1、ssh優(yōu)化和hosts解析?
2、創(chuàng)建用戶?
3、生成密鑰對?
4、分發(fā)公鑰到所有服務(wù)器?ssh-copy-id?
5、測試 遠程連接ssh?遠程執(zhí)行命令ssh ifconfig?
遠程拷貝文件scp rsync-e隧道模式
總結(jié)
- 上一篇: 使用计算机来解决实际问题首先要完成,《操
- 下一篇: 计算机电子与网络技术,电子信息工程与计算