2007年11月5日 星期一

SSH Client for Linux

從一台 Linux 搖控另一台 Linux , 遠端的操作就像在本機一樣方便 .


登入遠端 Linux 時 ,
可以用 PassWord 來做登入認証 , 也可以使用加密的 Key 來做登入的認証 .





Login by Password


RedHat Linux base 下的 Linux 包裝都有內建 SSH Client ,
所以我們 ......省略其安裝方法囉 ! 嘻~! ......


當我們要登入 SSH Server 時 , 我們要執行下列指令 :


ssh  user-name@ssh-server-hostname-or-ip


譬如 : 我們有一台 SSH Server 的名稱是 web.iq180.com.tw , 其 IP 位置為 220.135.50.194
則我們可以執行下面指令來登入這台 Server :


ssh root@web.iq180.com.tw

( 使用 root 登入 , 其 FQDN 已經有在上層 Domain Name System 註冊 . )


或者是執行下面指令


ssh root@220.135.50.194

( 使用 root 登入 . )



請參考下面從 Linux Client 利用 SSH Client 登入另一台 Linux Server 的例子 :
執行
ssh root@192.168.0.16

它出現如下圖訊息


它說沒有確認過這台 Server 是可靠的 , 問說是否要繼續 ?
這裡我們輸入 yes , 按 Enter 即可 .
(只有第一次連線會問這問題 , 以後就不會再問了)



跟它確認要繼續連線後 , 它會問我們 password : , 輸入密碼後按 Enter 即可登入 192.168.0.16 這台 Linux Server 囉 !




看看提示字元的主機名稱 , Client 端電腦叫 web , Server 端的電腦名稱為 postgres .
如何 ! 這樣就登入 192.168.0.16 這台 Server 囉 !


要登出只要輸入


exit

即可 .



登入後可以執行指令了 , 那如果要把檔案用 ssh 連線加密的方式傳到 Server 上呢 ?


只要 Server 端有啟動 ssh , 那我們就可以在 Client 端利用 scp 指令來傳檔哦 !
scp 語法 :


scp <來源檔> <目的檔>
(其中遠端電腦的寫法為 user-name@host-name-or-ip:/dir/file-name)


例如 , 我們要把 /tmp/text.txt 這個檔傳到 Server上的 /root/text-file/ 目錄下 , 就執行 :


scp   /tmp/text.txt   root@192.168.0.16:/root/text-file/text.txt


如果我們要把Server 上 /tmp/text.txt 這個檔傳到本機上的 /root/text-file/ 目錄下 , 就執行 :


scp   root@192.168.0.16:/tmp/text.txt   /root/text-file/text.txt


這樣舉例可以吧 ! 醬應該算滿清楚的哄 !!!


另外還有 sftp 也是利用 ssh 加密來傳檔 , 有空再說明囉 !













login by Key


每次登入都要輸入密碼 , 很麻煩耶 !
而且如果有人用字典攻擊法攻擊 , 帳號及密碼早晚被猜出來 , 好像還是有些危險 .
每個禮拜都換密碼 , 也不知道這一個禮拜的時中會不會被猜中 , 又不可能每天換密碼 ………


沒關係 , 這問題有解 .
可以利用金鑰認証的方式 , 來解決這個問題 , 也就是製作使用者金鑰 (Public and Private keys) 來作登入時的認証 , 及連線時的加密 .
其操作方式如下 :


第一次我們先用密碼認証登入到 Server :
登入後執行下面指令 :
(這個例子是用 root 登入 , 若您不是要用 root 登入 , 請自行更換身份)


1. mkdir   ~/.ssh  ( 在 Server 上新增一個資料夾 )


2. chmod   700   ~/.ssh  ( 更改這個資料夾的權限 )


3. 建好目錄後 , 我們就回到 Client 端來製作 User Key ,
     執行  exit   登出 Server , 回到 Client 端 .


4. 執行 ssh-keygen 來製作 User Key
     ssh-keygen   -t   rsa


     按下 Enter 後 , 它會問您 key 要放哪裡 ?
     使用 key 的時候要不要密碼 ?
     再次輸入密碼 !
     這三個問題我們通通按 Enter 帶過 . 做出來的 key 就放在 ~/.ssh 內 ,
     其中 Private key 檔名為 id_rsa , Public key 檔名為 id_rsa.put .


5. 接下來我們要利用 scp 指令 , 把 Public key 傳到 192.168.0.16 這台 Server 上 .
     並且改檔名為  authorized_keys2

     scp  ~/.ssh/id_rsa.put  root@192.168.0.16:~/.ssh/authorized_keys2


註:要注意的是 , 如果在您執行 scp 指令前 , Server 上已經有 ~/.ssh/authorized_keys2 這個檔案 , 也就是說 , 如果已經有人上傳過 Public key 的話 , 上述的 scp 指令您必須修改一下哦 ! 您可以先把 Public key 傳到 Server 上的另一目錄 , 再利用 “cat” 指令及輸出轉向 “>>” 把您的 key 附加到 authorized_keys2 檔案內 .

做完以上步驟就算完成了 , 所以從此我們在這台 Linux 上 , 用 SSH Client 要登入到 192.168.0.16 這台 Server , 不須要密碼就可以連上囉 !



如果您把 SSH Server 設定檔(/etc/ssh/sshd_config)內的PasswordAuthentication 參數改成 no , 然後重新啟動 sshd , 那就算其他人有您的密碼 , 也無法使用 ssh 登入這台 Server 囉 ! 除非他拿到您的 Private key , 也就是 ~/.ssh/id_rsa 這個檔 .






OpenSSH












沒有留言: