SSH
主要用以下三個功能組件
1.ssh遠程登錄 Windows下的SecureCRT、Putty
2.sftp文件共享 類(FTP) SSH Secure FileTransfer Client
3.scp 文件共享 類(cp拷貝)
一、準備環境
兩臺電腦
1.WebServer: 192.168.66.131 這是一臺在機房的服務器
2.MyPC: 192.168.66.132 這是我們自己的工作電腦
克隆後IP獲取問題,詳見第一天的CentOS實驗整理。
二、Linux下遠程登錄
格式:
ssh用戶名@地址
不允許空密碼,很多Linux禁止root遠程SSH登錄
常見選項
-2表示使用SSH版本號
-p指定端口
ssh -2 用戶名@地址 (建議使用)
ssh -2 -p 端口號用戶名@地址
我們在使用Putty時,也可以在Connection中選擇使用什麼版本
配置文件:
vi/etc/ssh/sshd_config
Port22 這是ssh的端口號,默認是註釋掉的,去掉#號,就可以改了
PermitRootLoginno 這樣就能禁止root遠程登錄
重啓服務
servicesshd restart
三、sftp文件共享(瞭解)
Linux下命令行:
sftp用戶名@主機地址
連上去後可執行 ls get put help bye等
很少用命令行,我們經常在Windows下用客戶端軟件:
WinSCP(同時支持SCP協議)
SSH Secure File TransferClient (安裝SSH.Secure.Shell.Client_3.2.9.exe)
四、scp 文件共享(推薦使用)
1、本機拷貝到遠程主機用法:
scp 本地文件用戶名@ip地址:遠程主機上的目錄
scp -r 本地目錄用戶名@遠程主機ip:遠程主機上的目錄
scp --help查看幫助
例將inittab文件傳到另一臺主機的/root目錄中:
scp /etc/[email protected]:/root
2、從遠程主機拷貝到本地:
scp 用戶名@遠程主機地址:遠程文件本地目錄
scp -r 用戶名@遠程主機地址:遠程目錄本地目錄
常用選項
-p 保持原有文件屬性 (建議加上)
-r 複製目錄
-P 指定端口
五、ssh信任(非對稱加密)
對稱密鑰加密 密鑰yue
加密解密使用同一密碼
速度快
密鑰本身需要交換(這就不安全了)
非對稱密鑰加密
也稱公開密鑰加密,會同時生成兩個密鑰
一個公開出去(公鑰),一個私人持有(私鑰)
用其中一個密鑰加密的數據,只有用另一個密鑰才能解密
公鑰加密->私鑰解密 (加密文件時使用) 參見“openssl命令行進行RSA加密解密.txt”
私鑰加密->公鑰解密 (驗證身份,數字簽名) 讓服務器信任後,使用SSH時,就不用驗證密碼了
非對稱密鑰加密特點:
安全性好
速度慢
疑問:scp是需要輸入密碼的,如何建立信任關係?
測試環境:
遠程服務器ip爲192.168.88.88,用戶爲webadmin
本地電腦用戶爲root
目的:本機root登錄後,可以直接以webadmin身份操作遠程服務器,不需要驗證密碼
原理:讓對方(遠程服務器)信任我的公鑰
1、本機生成密鑰對:(例如當前登錄用戶爲 root)
ssh-keygen-t rsa 全部回車即可
RSA公鑰加密算法是1977年由美國麻省理工學院開發的會提示生成的公鑰 id_rsa.pub 已生成 ,即是該用戶默認的 RSA 身份認證公鑰(SSH-2)
2、將公鑰拷貝至遠程主機
scp/root/.ssh/id_rsa.pub [email protected]:/home/webadmin
此時還是需要驗證密碼的,webadmin是遠程主機192.168.88.88上的普通用戶
3、到遠程主機做信任操作
ssh-2 [email protected]
cd~ 來到用戶宿主目錄
ls-a 如果沒有.ssh目錄,則創建
mkdir.ssh
catid_rsa.pub >> .ssh/authorized_keys#加入到認證信息,用的是追加,可以保存多個信任用戶
chmod700 .ssh # 新版本的ssh要求這個目錄的權限必須是700
chmod600 .ssh/authorized_keys # 新版本的ssh要求這個文件的權限必須是600
4、回到MyPC本機測試
[email protected] 不需要密碼,直接登錄成功
那麼通過scp拷貝文件,也不需要密碼了
注意:
在本機中由於是root用戶生成公鑰,所以只要在本機上,只有使用root用戶以webadmin身份操作遠程主機纔是信任的。
如果本機不是root用戶,或不指定以webadmin用戶操作遠程主機,依然需要密碼。
例 ssh [email protected] ,嘗試以root身份登錄遠程主機,還是要輸入密碼
六、rsync數據鏡像備份工具
WebServer和MyPC上都要安裝rsync,其中WebServer服務器上是以服務器模式運行rsync,
MyPC上則以客戶端方式運行rsync。這樣在web服務器上運行rsync守護進程,
在MyPC上定時運行客戶程序來備份WebServer服務器上需要備份的內容到MyPC。
方便的增量備份實現
可鏡像保存整個目錄樹和文件系統
保存文件權限、時間、軟硬鏈接等
文件傳輸效率高(可壓縮傳輸)
可以使用ssh加密通道
1、準備環境
WebServer:
服務是xinetd進程託管方式
默認都已安裝,檢查是否已安裝
rpm -q rsync
啓動服務默認不啓用
ls /etc/xinetd.d
vi /etc/xinetd.d/rsync
修改disable = no 保存退出編輯器
service xinetd restart 重啓xinetd託管服務
若提示xinetd: 未被識別的服務,則說明/etc/rc.d/init.d下無xinetd包
yum -yinstall xinetd* #安裝xinetd
ps -le |grepxinetd #查看是否啓動成功
MyPC:
在MyPC中,想要同步服務器上的一個目錄到本機測試一下
rsync -arHz --progress--delete [email protected]:/website /backup
注意:webadmin是服務器上的用戶,請確定webadmin有訪問服務器/website目錄的權限
本機MyPC登錄用戶,要有操作/backup的權限
如果重複執行,只會操作有改變的文件,如新加的文件或刪除的文件,備份目錄同步操作
參數說明
-a 保持文件屬性
-r 子目錄遞歸處理
-H 保持文件硬鏈接 如果要備份的文件中沒有硬鏈接,也可以不加-H
-z 備份文件傳輸時壓縮處理
-essh 使用ssh加密隧道傳輸
--progress 在傳輸時顯示傳輸過程 可以不加
--delete 刪除目標備份沒有的文件
如果需要將MyPC中的目錄上傳到WebServer,本地目錄寫在前面即可
七、備份實例
定期將服務器上的/website目錄備份到本機
每週日02:00 完全備份,以日期作爲目錄
週一到週六02:00 做一次增量備份
爲什麼即要做增量備份,還要做完全備份?
這裏的增量備份,指的是目錄同步,跳過相同的文件,如果有文件被刪除,則也會刪除備份目錄中的,所以,需要定期做完全備份
crontab-e
0 2 * * 0 /usr/bin/scp -rp [email protected]:/website /backup/website_$(date+%Y%m%d)
0 2 * * 1-6 /usr/bin/rsync -arHz --delete -e ssh [email protected]:/website/backup/web
取當前日期
echo$(date +%F) 可查看date --help
echo$(date +%Y%m%d)
給變量賦值:
#a=5; echo $a;
#a=(`date +%F`)
#echo $a