2007年6月9日 星期六

Linux的異地備份(Offsite Backup)(2)

筆者在前一篇寫了有關於rsync的應用,這一篇則是要利用ssh的公鑰來達成免輸入密碼的遠端登入,因為自動排程時,人無法一直在電腦前面,所以這個動作就是重要的了

其實筆者在之前也有看過類似公鑰與私鑰的應用,不過一直到真的接觸了Linux後,才真的比較有機會能夠實做,真的有需求時才會真正實踐它

好了!其它就不多說了,就開始來進行吧!

首先來介紹一下ssh,它其實算是一種加密法,常應用於傳輸資料時,對傳遞資料加以保護,由此可知在網路上如果利用明碼來傳送資料,是一件多危險的事!

所以現在金融機構的網站,有許對也是利用https(http+ssl)來做一種保護的手段,不過ssh並不是代表它就是安全的,因為它加密的是傳送的資料,本身服務也是具有危險性的,千萬不要 讓所有主機都能夠利用ssh來登入,否則危險性極大

因為筆者是在區網中做資料的備援,故這一方面的影響較小,同時也在主機端上有加設登入的限制,例如特定網段、ip及使用者才可登入的保護(例如sshd_config、etc/host.allow(deny)和iptables),這裡就不再多加闡述

接下來就只要產生出公鑰與私鑰即可,建立的方法如下:

1. 在Client端利用ssh-keygen建立公鑰與私鑰
2. 私鑰放在Client端使用者家目錄中.ssh資料夾(/home/.ssh)
3. 公鑰放到Server端使用者家目錄中.ssh資料夾中,並更名authorized_keys

執行步驟如下:

1. 從192.168.1.x (Client端)傳送至192.168.1.99(Server端),所以我們就在Client端打入ssh-keygen可以產生公、私鑰

2. 因為key是在Client端上產生的,所以預設已把key放到/home/.ssh/下,而id_rsa(私鑰)與id_rsa.pub(公鑰)

3. 利用scp(ssh傳檔指令)把公鑰傳至Server端的root家目錄
scp /home/.ssh/id_rsa.pub root@192.168.1.99:~/

4. 更動檔案名稱,將id_rsa.pub更名為authorized_keys
cat id_rsa.pub >> ~/.ssh/authorized_keys (>>是導向符號)

5. 測試Client登入
ssh root@192.168.1.99(如果不需密碼即可登入,就成功了)

經由筆者接連這兩篇的文章,希望能夠幫助跟我一樣在Linux上需製作備援主機的人,能夠取得一個適當的方式來處理,當然也有其它的替代方式,歡迎一起討論喔!

10 則留言:

  1. 看過《攻殼機動隊》(Ghost Shell)嗎?

    多看幾遍以後,也許作這種事情會變得比較有趣喔,因為腦海中會浮現畫面...^^b

    衝吧,四課!!!

    回覆刪除
  2. 我還真的沒有看過哩!
    vincent大大下次分我看看吧!
    我剛上去搜尋了一下,發現是部漫畫
    該不會是跟matrix一樣吧!
    探討人與機器之間的互動!!

    也許這些事會變的有趣一點!!

    回覆刪除
  3. 噗,上一則留言有誤。
    應該是「衝吧,(公安)九課!!!」

    那末,神秘的「四課」是什麼呢?
    喔...「庶務」四課...XD

    回覆刪除
  4. ㄟ~我是有聽過庶務二課....四課是?
    像我們這種打雜工嗎?orz

    衝吧!(公安)九課感覺挺對岸的!

    公安九課...是說啥咪呢?

    跟我們這兒的條子伯伯有啥不同呀?

    一整個亂七八糟

    回覆刪除
  5. 好啦好啦,我會借你攻殼機動隊看啦...^^b

    回覆刪除
  6. 喔耶~~
    我就知道vincent最好了..攻殼機動隊

    我就等動畫來看,也是我喜歡的內容
    哈....

    畢竟資源共享是好的呀!嘿~~等待中

    回覆刪除
  7. 不太懂為什麼不建議linux server都要加上ssh。只要你的私鑰保護好並停掉密碼驗證,再加上半年換一次公私錀,這種管理的安全性是極高的呀!如果server是要我坐在它前面才能操作的話,那我就不當系統管理員了。

    回覆刪除
  8. 你說的沒錯!

    如果一定要在系統面前才能操作它的話!

    那我想應該有很多人不願意吧!

    不過,反之亦然,也有很多規模較大的公司,反而是非要在本機端才能操作server的(或是進入機房才可以),所以還是有所局限的吧!

    至於所有服務都要加上ssh的話,我想這一點可能跟"人性"與便利性有關吧!

    而且對於server本身的負載,以及一些不一定需要加密的服務,如果全都要用ssh的話,可能就太過了點(如果連看個yahoo新聞都要用https...)

    而且真的在是用https來做連線時,應該會發現很明顯的速度較慢,這就是人性面了,且只有單方面得到資訊的服務,真的有跑ssh(tunnel)的必要嗎?

    至於公私鑰的更換與應用,這一點真的是便利性極高沒錯,可惜的是...

    國人對於資訊資料的使用習慣,經常會讓我們不敢茍同吧!

    這就跟為什麼銀行常說,網路銀行交易的損失要自行吸收,銀行不願承擔該風險相同!!你說是嗎?

    回覆刪除
  9. https = http + ssh ?
    https 只是用到 SSL(Secure Socket Layer) 並無使用到 SSH(Secure Shell) . 這兩者雖然在連線過程中都會將資訊加密, 但是應用領域完全不同.

    回覆刪除
  10. stormax:
    多謝你的更正,其實我在寫ssh的相關應用時,也有發現到我先前的錯誤!(沒想到還有!)

    多謝你的指正!我會馬上改的!其實已經有很多原本似乎不夠詳盡或嚴謹的內容,我會慢慢抓出來的!

    但是有大家的幫忙,應該會更快發現我的錯誤!畢竟這就是我寫部落格的原因!

    還是再三感謝!

    回覆刪除