SSH
SSH(Secure Shell Protocol)是一種加密的傳輸協定,利用非對稱金鑰系統。
公鑰由伺服器端產生,並讓用戶端下載;用戶端利用公鑰產生私鑰並傳給伺服器端。
之後伺服器與用戶端之間就以公鑰加密,私鑰解密的方式通訊。
所以正常的情況下,一台主機中,會有兩把鑰匙,「遠端主機公鑰」和「本地主機私鑰」。
公鑰存放的目錄在~/.ssh/know_hosts,而私鑰存放在/etc/ssh/ssh_host_key*。
使用者可以使用 #ssh [參數] [使用者名稱]@[遠端主機位址] 連結登入遠端主機。
-X參數可以讓ssh使用x-window通道,使用戶端可以再本機上顯示遠端主機的圖形介面。
也可以使用 #ssh -f [使用者名稱]@[伺服器位址] [指令] 直接對遠端主機下達指令,無須登入。
若不加-f參數,連線會卡在登入,但是指令仍會執行,必須等待遠端主機指令跑完。
加上-f則會下完指令後馬上登出遠端主機,繼續在本地主機工作。
ssh的設定檔,用戶端的存放於/etc/ssh/ssh_config,伺服器端的存放於/etc/ssh/sshd_config。
ssh伺服器端有幾個比較重要的設定,PermitRootLogin是設定可否使用root身分登入。
AllowUser是設定允許登入的使用者,PasswordAuthentication是設定是否驗證。
一般來說為了安全起見,會關閉允許使用root身分登入。(預設是允許)
先切換至student帳號 交換公鑰給遠端server
desktop 指令
#ssh-keygen
#ssh-copy-id -i /home/student/.ssh/id_rsa.pub server40
#ssh 'server40'
#ssh -X 'server40'
serverX 指令
#grep --color -n -e 'PermitRootLogin' -e 'PasswordAuthentication' /etc/ssh/sshd_config
#sed -i '42s/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
#sed -i '66s/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
#grep --color -n -e 'PermitRootLogin' -e 'PasswordAuthentication' /etc/ssh/sshd_config
#service sshd restart
ssh同時也可以用於傳送檔案,#scp 可以用以上傳或下載檔案。
#scp [參數] [檔案或目錄] [使用者名稱]@[遠端主機位址]:[目的目錄] 用以上傳檔案。
#scp [參數] [使用者名稱]@[遠端主機位址]:[檔案或目錄] [目的目錄] 用以下載檔案。
參數-p可以保留原本的權限,-r可以複製目錄以下所有檔案,-l可以限制傳輸的速度,單位為Kbits/s。
而 #rsync 可以將檔案同步至遠端主機中,用法與 #cp 類似。
指令為 #rsync [參數] [使用者名稱]@[遠端主機位址]:[檔案或目錄] [目的目錄]。
常用參數有,-a為保存來源所有權限屬性設定,-v為觀察模式,-r可以同步目錄以下所有檔案。
為了省去登入時輸入密碼的步驟,使得ssh可以利用在自動排程上,可建立用戶端公鑰傳至伺服器。
#ssh-keygen -t dsa 可以建立DSA演算法的鑰匙,或者可用-t rsa建立RSA演算法的鑰匙。
再使用 #ssh-copy-id -i .ssh/id_dsa.pub [使用者名稱]@[遠端主機位址] 送到遠端主機。
如此下次登入時將不用再輸入密碼即可登入遠端主機。
ssh還有一個特殊的功能ssh tunnel,可以讓tcp的協定經由ssh傳送,提高安全性。
#ssh -L [本地埠]:[遠端主機位址]:[遠端主機埠] [ssh轉送伺服器]
參數-L是利用指定的本地埠轉送,-P為利用socks方式連線,-N為不建立Shell。
簡單的說,ssh可以讓本地埠的封包經由ssh轉送伺服器,將封包加密傳送至遠端主機上。
VNC
VNC類似Windows系統中的遠端桌面,讓使用者連線到遠端主機時可使用圖形化介面。
VNC Server是使用TigerVNC-Server,下載安裝後可在/etc/sysconfig/vncserver設定。
設定檔中,需在VNCSERVERS輸入使用者,例如VNCSERVER="1:student"。
而該帳號的連線密碼必須先切換到該使用者下,才可以利用 #vncpasswd 設定。
設定完成啟動VNC Server後,用戶端可用 #vncviewer 進行連線。
連線時位址後加上「:使用者編號」表示以該帳號登入,例如192.168.1.25:1表示以student登入。
跨系統的連結必須安裝另外的程式。
如果Windows系統需要登入Linux系統的VNC Server,必須在Linux系統上安裝Xrdp。
Xrdp不可使用root登入,且安裝後需自行啟動服務。
如果Linux系統希望連線到Windows系統的遠端桌面,必須安裝rdesktop。
#rdesktop -g [解析度] 可以調整遠端畫面的解析度。