2009年2月27日 星期五

[筆記]ssh蕩劍十式(1)

01.What is OpenSSH?
根據維基百科:「OpenSSHOpen Secure Shell)是使用SSH透過計算機網路加密通訊的實現。它是取代由SSH Communications Security所提供的商用版本的開放原始碼方案。目前OpenSSH是OpenBSD的子計畫。OpenSSH常常被誤認以為與OpenSSL有關聯,但實際上這兩個計畫的有不同的目的,不同的發展團隊,名稱相近只是因為兩者有同樣的軟體發展目標──提供開放原始碼的加密通訊軟體。」
也就是說,我們在linux平台上快快樂樂使用的ssh,其實是所謂的openssh,也就是ssh的開放原始碼版本。ssh以及其加密原理不是本文所關心的議題,在本文中只關心ssh的基本應用。
aptitude install ssh sshfs denyhosts
02.ssh蕩劍十式簡介:
A.遠端登入:ssh maxsolar@REMOTEHOST (搭配-X作X11Forwarding)
遠端執行:ssh maxsolar@REMOTEHOST 'command'
B.遠端複製:scp /local/path/foo maxsolar@REMOTEHOST:/remote/path/
C.遠端同步:rsync -ave ssh username@server1name:/home/ /export/home/
D.加密ftp傳輸:sftp maxsolar@REMOTEHOST
E.Port Forwarding: ssh -L 1234:REMOTEHOST:4321 maxsolar@REMOTEHOST
F.公鑰認證:ssh-keygen (包含ssh-agent + ssh-add)
G.取得公鑰:ssh-keyscan
H.基本安全設定:
I.防護你的ssh伺服器:denyhosts
J.掛載sshfs
03. 第一式:遠端登入及遠端執行命令 傳統的rlogin、telnet、rsh都是沒有加密的連線,我們不管在任何時刻都不應該在繼續使用他們;取而代之的連線方法是ssh。常用的參數為-X,可以讓遠端的圖形傳到自己的xserver來。 沒有使用ssh的年代,使用telnet遠端連線要實現傳送遠端圖形需要下列指令: localhost端:
xhost +REMOTEHOST; telnet REMOTEHOST
到remotehost端後:
export DISPLAY=LOCALHOST:0.
這個方法不僅麻煩,如果client端是撥接上網,沒有固定ip,或是透過nat上網,那麼設定DISPLAY時就是痛苦萬分,因為你無法告知遠端一個private ip去作X11Forwarding。
How to make sure we can have X forwarding? 請同時檢查client端與server端。查看本地端的/etc/ssh/ssh_config,是否有設ForwardX11 yes(或是#ForwardX11 no)。 server端請檢查/etc/ssh/sshd_config是否有X11Forwarding yes(或是#X11Forwarding no) 如果沒有,請修正之並重新啟動sshd;之後你就可以透過
ssh -X maxsolar@REMOTEHOST
遠端連線並傳回遠端圖形。 遠端執行 跟遠端登入是一樣的道理,只是有時為了執行一件小事情,不需要勞師動眾的連線過去為的只是去看一個小檔案。例如你只是要修改遠端的一份文字檔,你可以用一對單引號把command包住:
ssh -X REMOTEHOST 'gedit text.txt&'
同樣的,能不能出現圖形必須看ssh兩端的設定檔。 04. 第二式:遠端複製 利用scp作遠端複製,用法跟cp完全相同。
scp /local/path/foo maxsolar@REMOTEHOST:/remote/path/
把本地的foo檔複製到遠端的/remote/path下。
scp maxsolar@REMOTEHOST:/remote/path/foo /local/path/
把遠端的foo檔複製到/local/path底下。 我們可以從這個例子學習到兩件事情: A.username可以不加。假設遠端跟本地使用者名稱相同(uid可以不同),加不加username都不影響結果。假設你希望用遠端不同的username去執行,才要另外指定username。例如:
scp /local/path/foo maxubuntu@REMOTEHOST:/remote/path/
就是以遠端的maxubuntu身份來執行。 B.路徑的表示法可以是絕對路徑,也可以是相對路徑。例如:
scp linux_guide.odt REMOTE:docs/linux/
相同於
scp linux_guide.odt REMOTEHOST:/home/maxsolar/docs/linux/
05. 第三式:遠端同步 利用rsync搭配ssh可以使兩地主機資料同步且避免封包被解析出原始資料。
rsync -av -e 'ssh -l username' REMOTEHOST:/home/ /export/home/
將server1的/home備份到本機的/export/home來。
rsync -avz --delete -e 'ssh -l username' REMOTEHOST::/home/ /export/home/
兩個冒號是使用遠端的rsync server,若本地端loding很重時可以使用。 詳細的筆記請參閱:rsync簡易用法 06. 第四式:加密的ftp傳輸 透過sftp來代替傳統未加密的ftp協定。
sftp maxsolar@REMOTEHOST
所有的指令都有分成本機或遠端,例如ls是顯示遠端清單,lls顯示local清單。
get:抓取資料。搭配-P把metadata(權限、mtime、atime全部保留)一起轉移到本機。
put:上傳資料。
更多的資訊請man sftp。不過你應該可以使用filezilla來搭配sftp:
Fig 1.Filezilla的介面。 Fig 2.開啟站台管理員。伺服器類型選擇sftp,登入形式為一般。如果必要的話,字碼集的分頁可定為「強制使用UTF-8」。
Fig 3.第一次登入會要求加入公鑰。
從此後可以快快樂樂的使用sftp,把ftp忘記。不過他並不提供匿名的ftp服務,因此不適合對外當成file server。另外,假設某一端的網路環境較慢,sftp傳輸的速率也會比傳統未加密的ftp來得慢。 您可以再參考:[筆記]ssh蕩劍十式(2)

沒有留言: