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