1.openssh簡介:
用於遠程鏈接服務器主機,通訊過程和認證過程都是加密的,比telnet更安全。
2.openssh版本:
v1版本:沒法防範中間人
v2版本:基於DH算法作密鑰交換,基於RSA或DSA算法實現身份認證
3.openssh有兩種認證方式:
基於口令認證(密碼)
基於密鑰認證
---ssh-keygen //密碼生成器
---ssh-copy-id //將公鑰傳輸至遠程服務器
---scp //跨主機安全複製工具,和ssh-copy-id 做用同樣,可是權限部分有差異
4.openssh架構:C/S架構
5.配置文件位置:
服務端:/etc/ssh/sshd_config
客戶端:/etc/ssh/ssh_config
6.基於口令認證,語法格式:
ssh 遠程主機ip
輸入遠程主機root的登陸密碼
或
ssh 遠程主機用戶名@遠程主機ip
輸入遠程主機用戶的登陸密碼
或
ssh 遠程主機用戶名@遠程主機ip '執行的命令'
輸入遠程主機用戶的登陸密碼
原理:當ssh客戶端鏈接某一服務器時,服務器會向其發送公鑰副本,客戶端會把它保存到~/.ssh/known_hosts文件中。在之後的鏈接時,客戶端會拿這個文件中的公鑰和服務器發來的公鑰副本進行比對,匹配上就口令認證經過進行鏈接;匹配不上客戶端就會假定網絡通訊遭到劫持或服務器被,就會,中斷鏈接。
注意:若是服務器的公鑰發生改變(硬盤故障致使公鑰丟失或要替換公鑰),用戶則須要更新其~/.ssh/known_hosts文件並刪除舊的條目纔可以進行登陸或者直接刪掉這個文件。
經過cat ~/.ssh/known_hosts能夠看到公鑰內容由服務器ip、加密算法類型、隨機數組成。
主機密鑰(公鑰)存儲在服務器上的/etc/ssh/ssh_host_key文件中(有一個pub文件裏的內容是和客戶端公鑰對應的)。key結尾的是私鑰,pub結尾的是公鑰。
7.配置基於ssh密鑰的身份驗證:
ssh容許用戶使用私鑰-公鑰方案進行身份驗證。私鑰文件用做身份驗證憑據,必須妥善保管;公鑰複製到用戶但願登陸的系統,用於驗證私鑰,公鑰不須要保密。擁有公鑰的ssh服務器能夠發佈僅持有私鑰的系統纔可解答的問題。所以,能夠根據所持有的密鑰進行身份驗證,就沒必要每次訪問系統時輸入密碼。
使用ssh-keygen [-t 算法名]命令生成密碼,將會生成私鑰~/.ssh/id_rsa和公鑰~/.ssh/id_rsa.pub。
注意:**
生成密鑰時,系統將提供指定密碼的選項,在訪問私鑰時必須提供該密碼。若是私鑰被偷,除頒發者以外的其餘任何人很難使用該私鑰,由於已使用密碼對其進行保護。這樣,在***者破解並使用私鑰前,會有足夠的時間生成新的密鑰對並刪除全部涉及舊密鑰的內容。
私鑰和公鑰的權限就分別爲600和644。.ssh目錄權限必須是700。
在可使用基於密鑰的身份驗證前,須要將公鑰複製到目標系統上,可使用ssh-copy-id完成這一操做。默認複製的是~/.ssh/id_rsa.pub文件。
演示:
算法
圖中①是說請輸入密鑰保存位置,默認保存在/root/.ssh/id_rsa文件,直接enter回車就能夠。 圖中②是說請輸入私鑰密碼,直接回車就是不設置。這裏的私鑰密碼是爲了防止私鑰被偷所需設置的。固然,不設置直接回車也能夠 圖中③是讓你再重複輸一次私鑰密碼,若是②是直接回車的,這裏也直接回車,③和②保持一致。
圖中①提示確認繼續鏈接嗎,輸入yes;
圖中②提示輸入遠程服務器用戶的登陸密碼,我這裏用的是root用戶
圖中③在登陸遠程服務器的時候,提示輸入私鑰密碼,注意是咱們前面設置過的私鑰密碼,也就是說私鑰和私鑰密碼保存在本機,公鑰保存在遠程主機。
注意:
拷貝以前的公鑰權限是644,拷貝過去在遠程主機上文件權限是600(拷貝過去的文件是遠程主機用戶家目錄下的.ssh/authorized_key文件);若是是使用scp 公鑰文件 遠程主機用戶名@遠程主機ip:/目錄,這個文件權限是不符合規定的,須要手工改爲600。
8.自定義ssh服務配置:
openssh服務器一般無需修改,系統仍是提供了不少配置以保證安全。能夠在openssh服務器的/etc/ssh/sshd_config中進行修改,修改完重啓sshd服務。
例如:
PermitRootLogin {yes|no} //是否容許root用戶遠程登陸系統
PermitRootLogin without-password //僅容許root用戶基於密鑰方式遠程登陸
PasswordAuthentication {yes|no} //是否啓用密碼身份驗證,默認開啓
注意:ListenAddress 172.16.10.4 //監聽地址要寫服務器本身的地址
9.ssh的其餘注意事項:數組