目錄
ssh的安全機制
ssh的安裝
啟動伺服器的ssh服務
ssh兩種級別的遠端登入
ssh的高階應用
secure shell(ssh) 是由 ietf(the internet engineering task force) 制定的建立在應用層基礎上的安全網路協議。它是專為遠端登入會話(甚至可以用windows遠端登入linux伺服器進行檔案互傳)和其他網路服務提供安全性的協議,可有效彌補網路中的漏洞。通過ssh,可以把所有傳輸的資料進行加密,也能夠防止dns欺騙和ip欺騙。還有乙個額外的好處就是傳輸的資料是經過壓縮的,所以可以加快傳輸的速度。目前已經成為linux系統的標準配置。
ssh只是一種協議,存在多種實現,既有商業實現,也有開源實現。本文主要介紹openssh免費開源實現在ubuntu中的應用,如果要在windows中使用ssh,需要使用另乙個軟體putty。
ssh之所以能夠保證安全,原因在於它採用了非對稱加密技術(rsa)加密了所有傳輸的資料。
傳統的網路服務程式,如ftp、pop和telnet其本質上都是不安全的;因為它們在網路上用明文傳送資料、使用者帳號和使用者口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另乙個人或者一台機器冒充真正的伺服器接收使用者傳給伺服器的資料,然後再冒充使用者把資料傳給真正的伺服器。
但並不是說ssh就是絕對安全的,因為它本身提供兩種級別的驗證方法:
第一種級別(基於口令的安全驗證):只要你知道自己帳號和口令,就可以登入到遠端主機。所有傳輸的資料都會被加密,但是不能保證你正在連線的伺服器就是你想連線的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到「中間人攻擊」這種方式的攻擊。
第二種級別(基於金鑰的安全驗證):你必須為自己建立一對金鑰,並把公鑰放在需要訪問的伺服器上。如果你要連線到ssh伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的金鑰進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公鑰,然後把它和你傳送過來的公鑰進行比較。如果兩個金鑰一致,伺服器就用公鑰加密「質詢」(challenge)並把它傳送給客戶端軟體。客戶端軟體收到「質詢」之後就可以用你的私鑰在本地解密再把它傳送給伺服器完成登入。與第一種級別相比,第二種級別不僅加密所有傳輸的資料,也不需要在網路上傳送口令,因此安全性更高,可以有效防止中間人攻擊。
ssh分為客戶端 openssh-client 和伺服器 openssh-server,可以利用以下命令確認電腦上是否安裝了客戶端和伺服器。
如果只是想遠端登陸別的機器只需要安裝客戶端(ubuntu預設安裝了客戶端),如果要開放本機的ssh服務就需要安裝伺服器。
sudo apt-get install openssh-client
sudo apt-get install openssh-server
首先確認ssh-server是否已經啟動了
如圖,sshd 表示ssh-server已經啟動了。如果沒有啟動,可以使用如下命令啟動:
sudo /etc/init.d/ssh start
停止和重啟ssh服務的命令如下:
sudo /etc/init.d/ssh stop #server停止ssh服務
sudo /etc/init.d/ssh restart #server重啟ssh服務
接下來就可以進行使用客戶機遠端登入伺服器了~
一、口令登入
ssh [email protected]
如果需要呼叫圖形介面程式可以使用-x 選項
ssh -x [email protected]
如果客戶機的使用者名稱和伺服器的使用者名稱相同,登入時可以省略使用者名稱。
ssh 192.168.0.1
還要說明的是,ssh服務的預設埠是22,也就是說,如果你不設定埠的話登入請求會自動送到遠端主機的22埠。我們可以使用-p 選項來修改埠號,比如連線到伺服器的1234埠:
意思是,該遠端主機的真實性無法確定,其公鑰指紋為 sha256:ffobshqrgoachj7xp4lsj9+xknblyyoe8zipl7k+qqi,確定想要繼續連線嗎?
輸入yes即可。這時系統會提示遠端主機被新增到已知主機列表。
然後會要求我們輸入遠端主機的密碼,輸入的密碼正確就可以成功登入了。命令提示符會修改為遠端主機的提示符,現在開始,終端中輸入的命令都將在伺服器中執行。
我們可以通過ctrl+d或者exit命令退出遠端登入。
二、公鑰登入
每次登入遠端主機都需要輸入密碼是很不方便的,如果想要省去這一步驟,可以利用金鑰對進行連線,還可以提高安全性。
1、在本機生成金鑰對
使用ssh-keygen命令生成金鑰對:
ssh-keygen -t rsa #-t表示型別選項,這裡採用rsa加密演算法
然後根據提示一步步的按enter鍵即可(其中有乙個提示是要求設定私鑰口令passphrase,不設定則為空,這裡看心情吧,如果不放心私鑰的安全可以設定一下),執行結束以後會在/home/當前使用者 目錄下生成乙個.ssh 資料夾,其中包含私鑰檔案 id_rsa和公鑰檔案 id_rsa.pub。
2、將公鑰複製到遠端主機中
使用ssh-copy-id命令將公鑰複製到遠端主機。ssh-copy-id會將公鑰寫到遠端主機的 ~/ .ssh/authorized_key 檔案中
ssh-copy-id [email protected]
經過以上兩個步驟,以後再登入這個遠端主機就不用再輸入密碼了。
cheers~
使用遠端主機不中斷的跑程式
當我們利用ssh在遠端主機上跑程式的時候,只要關閉了終端就會中斷ssh連線,然後遠端主機上正在跑的程式或者服務就會自動停止執行。我們可以利用nohup + 需要執行的程式使執行的程式在切斷ssh連線的時候仍然能夠繼續在遠端主機中執行。nohup即no hang up(不掛起)。
除此之外還有很多遠端操作應用,包括資料傳輸、埠操作(將不加密的網路連線繫結到ssh埠實現間接加密)等等,可以參考柚子皮大神的部落格:
通訊 SSH介紹和使用,SSH key教程
1 概述 ssh 為 secure shell 的縮寫,由 ietf 的網路小組 network working group 所制定。利用 ssh 協議可以有效防止遠端管理過程中的資訊洩露問題。簡單說,ssh 是一種網路協議,用於計算機之間的加密登入。最早的時候,網際網路通訊都是明文通訊,一旦被截獲...
ssh簡介和使用
一 簡介 1.ssh secure shell 是乙個安全網路協議 2.用於遠端連線linux伺服器 3.傳輸的資料是rsa非對稱加密和壓縮的 二 安裝 1.ssh分為伺服器和客戶端,linux系統預設已經安裝 2.登入遠端機器需要安裝客戶端 sudo apt get install openssh...
ssh和scp的使用
sudo apt install ssh sudo service ssh start啟用ssh服務後,允許linux遠端連線到本機.ps e grep ssh如果服務已經啟動,則可以看到 sshd 否則表示沒有安裝服務,或沒有開機啟動。埠號預設為22,可以對其中的引數進行修改.修改完成後,重啟ss...