Centos下關於ssh、scp與rsync設定與應用

來源:互聯網
上載者:User

標籤:author   指定   dir   推薦   sync   備份   style   ice   img   

最近應公司要求,需要對檔案資料進行遠程傳輸與備份操作,特此寫了一篇文章記錄下了關於ssh、scp以及rsync的應用配置全過程,可能過程太過羅嗦,但主要就是想在不遺漏每個過程的情況下對此進行闡述,希望大家能夠體諒。當然類似的文章還有很多,本文僅以個人的名義來寫的,不喜勿噴!如果文章中有什麼錯誤的地方還請各位大神多多指點!萬分感謝!
一、ssh在檔案分享權限設定裡面的應用
這個ssh可不僅僅是一個遠程登入的一個服務,其實呢!它包括了幾個組件:ssh(遠程登入)、sftp(檔案分享權限設定【類似FTP】)、scp(檔案分享權限設定【類似cp拷貝】)。所以大家在聽到ssh的時候可千萬不要認為這個軟體包在用的時候只能實現遠程登入,別的什麼事情都幹不了,實際上不是這樣的。希望大家明白!
首先我們先來看一下SSH遠程登入的事情,我們正常使用的用戶端的遠程登入管理工具(如:SecureCRT、Xshell等..)來做登入管理的控制,但是,
如果我們想從一台Linux伺服器登入到另一台Linux伺服器的話,我們應該怎麼處理?
我們可以使用ssh命令【ssh遠程登入:ssh 使用者名稱@遠程主機IP地址】進行登入,但是我們登入的時候要注意以下規則:
a.不能使用空密碼登入
b.不能使用root使用者身份登入(具體根據centos版本來,目前centos版本中多數都是預設是允許root使用者登入,這裡只是作為例外考慮,為了安全問題,一般我們建議搭建不要使用root使用者登入,因此建議搭建使用root使用者去授權普通使用者去進行日常操作)
下面來看一下ssh命令具體的使用方式:
ssh遠程登入:ssh 使用者名稱@遠程主機IP地址
常用選項:
-2 強制使用第二代ssh協議(ssh發展的兩個版本,這裡建議大家使用ssh2,因為它的安全性會更高點,我這裡為了便於示範,有些可能就直接預設登入,在此聲明一下,我們現在使用的ssh版本都是這個openssh它,它同時支援了ssh1和ssh2)
-p 連接埠號碼
例如:
ssh -2 [email protected]
案例:
我這邊準備兩台Centos伺服器,資訊如下:
機器一:192.168.1.17 已存在普通使用者:formal
機器二:192.168.1.18 已存在普通使用者:formal
例如我這裡從17伺服器遠程登入到18伺服器:
--登入17伺服器,切換為普通使用者,1:
su - formal


--使用ssh命令從17伺服器遠程登入到18伺服器,提示你是否繼續串連登入,直接輸入yes即可,2:
ssh [email protected]


由於我們沒有對formal使用者佈建密碼,因此我們直接斷行符號.就會發現,請求被拒絕。這是因為登入的時候centos系統預設是不能使用空密碼登入。因此,我們在這裡將兩台伺服器的普通使用者同時設定一個密碼,以備後面使用,3:


//設定密碼(這裡要特殊說明一下,使用普通使用者直接設定密碼的時候,可以直接使用passwd命令進行設定,但是要求密碼不能過於簡短與簡單,要包含特殊字元,否則不讓你設定成功。如果使用root使用者佈建密碼,可以使用passwd 使用者名稱,進行設定,使用root使用者佈建密碼時候可以使用簡單的密碼。為了便於測試,我這裡直接使用root使用者佈建密碼.),這裡密碼為:formal
passwd formal
//刪除密碼(root使用者刪除方式:passwd -d formal;普通使用者刪除方式:passwd -d此處要說明一下,用root使用者為普通使用者建立的密碼只能用root使用者刪除)

--好了,既然使用者密碼我們已經設定好了,那就繼續登入試試,輸入密碼,登入成功。4:
ssh [email protected]


--接下來為大家介紹一下ssh的常用配置。這裡主要為大家介紹一下怎麼禁止root使用者登入,還有就是怎麼樣改變ssh的連接埠號碼。
--使用root使用者,編輯18伺服器的/etc/ssh/sshd_config檔案,我們可以看到PermitRootLogin yes這句話是注釋掉的,預設情況下都是可以使用root使用者登入的因此這句話注釋掉與不注釋掉都是可以使用root使用者登入的.5,5-1:
ssh [email protected]


如果我們要想阻止root使用者登入,只要將PermitRootLogin yes這句話中的yes改為no表示不允許使用root使用者登入即可,改完後後我們重啟ssh服務,然後再17伺服器上使用root使用者登入測試,即可發現18伺服器禁止了我們使用root使用者遠程登入伺服器,6,6-1:
vi /etc/ssh/sshd_config
service sshd restart


ssh [email protected]

 

--接下來我們看一下怎麼改變ssh登入的連接埠號碼。
正常情況,我們使用ssh命令遠程登入另一台伺服器的時候都會使用預設的22連接埠登入,如果我們想改變登入的連接埠號碼,我們可以更改/etc/ssh/sshd_config檔案中Port 22屬性,將22改為你要修改登入的連接埠號碼,例如我這裡將18伺服器登入連接埠改為10022,重啟ssh服務登入,在17伺服器登入18伺服器,這時候登入指令需要我們加上-p來指定登入連接埠號碼。測試結果,7-1,7-2,7-3:
ssh -p10022 [email protected]


關於ssh遠程登入,就說這些,對於sftp一般用的少,這裡就不再多說,有興趣的童鞋自己可以找度娘查查相關資料。
緊接著,我們來介紹一下scp的應用。說起scp的應用,其實很簡單,正常我們在應用的過程中,我們可以非常方便的將本機檔案拷貝到遠程主機,當然也可以將遠程主機上的檔案拷貝到本機。關於scp的使用如下:
本機檔案拷貝到遠程主機
scp 本地檔案 使用者名稱@遠程主機IP地址:遠程主機目標目錄
scp -r 本地目錄 使用者名稱@遠程主機IP地址:遠程主機目標目錄
遠程主機檔案拷貝到本機
scp 使用者名稱@遠程主機IP地址:遠程主機檔案 本地目錄 
scp -r 使用者名稱@遠程主機IP地址:遠程主機目錄 本地目錄
常用選項:
-p(小寫) 保持原有檔案屬性(把一個檔案備份到另一個地方的時候相當於相當於建立一個目錄,例如時間就會改變,如果我們想讓相關屬性不便加這個屬性即可)
-r 複製目錄
-P(大寫) 指定連接埠
注意:大小寫是為了區分屬性與連接埠衝突
提醒:我們再使用scp命令的時候,必須有個有效使用者身份,而且這個使用者必須是遠程主機目標目錄有寫入權限的,例如:你不能使用xushouwei使用者拷貝檔案到/root目錄下。所以一般來講,都是寫到對使用者有寫入權限的目錄。這裡需要注意一下。
舉個例子:
scp /home/formal/xushouwei.properties [email protected]:/root/ 使用該命令拷貝,將會提示Permission denied(許可權拒絕),8:


--從17伺服器拷貝檔案到18伺服器(上傳),9:
scp /home/formal/xushouwei.properties [email protected]:/home/formal


拷貝前後18伺服器變化,9-1:


--從17伺服器拷貝目錄到18伺服器(上傳),10:
scp -r /home/formal/com/ [email protected]:/home/formal


拷貝前後18伺服器變化,10-1:


--從18伺服器拷貝檔案到17伺服器(下載),11:
scp [email protected]:/home/formal/xushouwei.properties /home/formal/


--從18伺服器拷貝目錄到17伺服器(下載),12:
scp -r [email protected]:/home/formal/com/ /home/formal/


//所以這個scp拷貝,使用起來非常的簡單,是我們比較推薦使用的一種方式,而且它正果檔案傳輸的過程中資料式加密傳輸的,要比其他傳輸方式安全性要更高一些。在使用上也比較方便..因此我們可以方便的周期性的從遠程主機到本地以及從本地到遠程主機實現備份與拷貝,但這裡有一個問題,就是執行命令的時候要執行密碼,那執行密碼的話就沒辦法實現自動化的備份與拷貝任務,我們之後就會為大家介紹通過信任主機的建立來實現自動化的備份.
--對稱秘鑰加密(例如:我們家裡使用的"鎖")13:
特點:加密與解密使用統一秘鑰
優勢:速度快
缺點:秘鑰本身需要交換


--非對稱秘鑰加密(公開祕密金鑰加密)14:
特點:使用時候產生兩個秘鑰,一個公開存放,為公開金鑰;一個私人持有,為私密金鑰;使用者用其中一個秘鑰加密的資料只有用另一個秘鑰才能解密.
用公開金鑰加密,私密金鑰解密->加密檔案
用私密金鑰加密,公開金鑰解密->數位簽章
優勢:安全性好
缺點:速度慢


//我們的信任主機就是採用非對稱秘鑰加密的原理來實現的,當前我們從一台主機登入到另外一台主機重要輸入密碼,這太麻煩了,能不能想一個辦法來告訴對方主機,只要是我這個使用者登入你就建立一個信任關係,不要求輸入密碼,那麼這要有一個方法,一台主機吧公開金鑰產生,發給另外一台主機,另外一台主機把公開金鑰判斷為可認證的公開金鑰,這個時候使用ssh登入的時候就不要求輸入密碼了,看一下原理15圖:


--既然原理都已經說了,我們就在實戰操作一下。。。
我這裡定義:主機一的ip為192.168.1.17,使用者為非root使用者formal,主機二的ip為192.168.1.18,使用者為非root使用者formal。
--在17伺服器上使用formal使用者產生秘鑰對:
ssh-keygen -t rsa
這時候就會提示你建議一個公開金鑰和一個私密金鑰然後還會告訴你這個秘鑰儲存的位置,預設位置是放在:/home/formal/.ssh/目錄下.緊接著斷行符號就會提示你認證,輸入密碼認證,這個設定我這裡直接斷行符號,接著又會提示你輸入密碼認證,繼續斷行符號即可。整個過程16,其中Your public key has been saved in /home/formal/.ssh/id_rsa.pub.這句話就是告訴你你剛才使用命令產生的公開金鑰位置:


--緊接車我們把剛才產生的公開金鑰拷貝到主機二上的/home/formal目錄下。輸入如下命令並輸入密碼即可,17:
scp /home/formal/.ssh/id_rsa.pub [email protected]:/home/formal/


//你看現在我們執行拷貝或者登入還是要求輸入密碼的,我們的目的就是讓他不要求輸入密碼,接下來我們就需要對主機二進行操作了.
--登入主機二並切換到formal使用者,18:我們可以看到在/home/formal目錄下有個id_rsa


//我們可以看到在/home/formal目錄下有個id_rsa.pub檔案,對了,這個就是我們剛才使用主機一產生並拷貝過來的秘鑰。我們所要進行的操作就是把這個公開金鑰檔案處理一下產生一個信任秘鑰檔案。因此我們需要在主機二上進行如下幾步操作:
這裡需要提醒一下,每個使用者的ssh資訊都儲存在自己宿主目錄的.ssh目錄裡面,但這個目錄並不是每個系統都會自動建立(沒有的話需要手工進行建立,使用命令:mkdir .ssh),但是在centos6.7系統下這個目錄預設是隱藏的,我們可以使用ls -la查看宿主目錄內容,19所示:
ls -la


--把目前的目錄下的id_rsa.pub檔案輸出重建到.ssh目錄下,建立一個新的認證檔案,這個認證檔案名稱為:authorized_key(固定),產生並查看,20:
cat id_rsa.pub >> .ssh/authorized_keys
ls -l .ssh/


//然後再目前使用者的宿主目錄的.ssh目錄下我們就產生了這個認證檔案建立了一個信任關係。其實這個原理非常的簡單,就上我們剛才講的非對稱秘鑰的數位簽章一樣,換句話說你想讓別人知道這是你登入的,對你建立信任關係,怎麼建立信任關係?首先你得把你的公開金鑰給人家,人家用公開金鑰去驗證是不是你登入的,是你登入的話就讓你登入,對你建立信任建立數位簽章。正常在很多linux版本中走到這個步驟就結束了。但是在新的linux中對許可權要求非常嚴格,它要求在你的使用者宿主目錄下的.ssh目錄下的檔案必須是700,也就是說只有這個普通使用者才有許可權,其他使用者沒有許可權而且要求這個許可權控制檔案的許可權必須是600,也就是說我們在使用的過程中只有這個formal使用者有讀寫權限。這裡要提醒一下,這個許可權一定要改,因為在新版linux中對許可權要求非常嚴格。因此我們需要執行如下命令進行操作,21所示:
chmod 600 .ssh/authorized_keys
chmod 700 .ssh


--至此,我們整個信任主機的建立過程就改完了。現在我們測試一下對不對。
--從主機一遠程登入到遠程主機二(這個過程不在提示你輸入密碼),22:
ssh [email protected]


--從主機一拷貝檔案到遠程主機二(這個過程不在提示你輸入密碼),23:
scp xushouwei.properties [email protected]:/home/formal/


注意:整個過程需要特別注意信任關係的認證原理使用者對應關係(一個使用者建立一個信任主機關係),這裡需要大家特別注意一下【完全備份】。
至此,有沒有人會問有沒有增量備份?因為很多時候,我們在做完全備份的時候備份的時間可能會比較長,備份的時候佔用的系統時間和資源都會比較不理想,那麼這個時候我們選擇增量備份是比較快的,直接把一個改動的檔案做一個更新。這裡面我推薦大家使用另外一個工具【rsync】,如果你想遠程同步的話就要使用該工具,下面我對該工具的特點簡要的為大家介紹一下:
a.方便增量備份實現
b.可鏡像儲存整個分類樹和檔案系統
c.保持檔案的許可權、時間、軟永久連結等
d.檔案傳輸效率高
e.可以使用ssh加密通道
可能,很多人都會覺得看一些關於rsync資料的時候就是特別的複雜,其實我們使用最常用的方法就行了,不用把它想象的多麼複雜,我這裡就把它最常執行的 App給大家走一遍。rsync這個服務預設在linux系統裡面都是使用xinetd(關於xinetd的知識請大家自行問度娘)來進行託管的,而且在所有的linux裡面預設都是安裝的,所以我們首先就要啟動這個服務。
--查看rsync檔案位置,24:
ls /etc/xinetd.d/


--使用之前首先判斷rsync這個軟體有麼有安裝,正常情況下所有的linux預設都是安裝的,如果沒有安裝的話自行下載並安裝(
下載:wget http://pkgs.repoforge.org/rsync/rsync-3.1.1-1.el6.rfx.x86_64.rpm 安裝:rpm -ivh rsync-3.1.1-1.el6.rfx.x86_64.rpm或者使用yum安裝:yum install -y rsync xinetd)一下即可,25:
rpm -q rsync


--使用root使用者修改/etc/xinetd.d/rsync設定檔,將disable屬性設定為no,重啟service xinetd restart啟動rsync服務.26-1,26-2:
vi /etc/xinetd.d/rsync


service xinetd restart


//至此,關於rsync的配置到這個步驟就可以了。那麼接下來怎麼樣來使用rsync?
案例情景:每天淩晨兩點做一下備份將18(主機二)上的宿主目錄(/home/formal/)目錄下的com目錄備份到17(主機一)上的宿主目錄(/home/formal/)目錄下。27:
使用非root使用者formal使用者進行操作:
crontab -e
0 2 * * * /usr/bin/rsync -arHz --progress --delete [email protected]:/home/formal/com /home/formal


--當然我們為了操作方便可以直接進行手動備份,手動備份之前我們先看一下主機一宿主目錄下的所有目錄檔案.28:
ll


--使用如下命令進行手動備份檔案操作,29:


--再次查看主機一宿主目錄下的所有目錄檔案,這時候主機一宿主目錄下多了個com目錄.30:
ll


//好了,到現在為止,我們已經學會了使用rsync工具進行檔案的增量備份。下面我們對備份進行分析一下。31:


至此,rsync的應用就講到這裡...

Centos下關於ssh、scp與rsync設定與應用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.