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]
經過以上兩個步驟,以後再登入這個遠端主機就不用再輸入密碼了。
使用遠端主機不中斷的跑程式
當我們利用ssh在遠端主機上跑程式的時候,只要關閉了終端就會中斷ssh連線,然後遠端主機上正在跑的程式或者服務就會自動停止執行。我們可以利用nohup + 需要執行的程式使執行的程式在切斷ssh連線的時候仍然能夠繼續在遠端主機中執行。nohup即no hang up(不掛起)。
SSH原理及兩種登入方法
ssh原理及兩種登入方法 ssh secure shell 是一套協議標準,可以用來實現兩台機器之間的安全登入以及安全的資料傳送,其保證資料安全的原理是非對稱加密。傳統的對稱加密使用的是一套秘鑰,資料的加密以及解密用的都是這一套秘鑰,可想而知所有的客戶端以及服務端都需要儲存這套秘鑰,洩露的風險很高,...
備忘 SSH兩種登入原理簡介
ssh 22埠 是secure shell 的簡寫,由ietf network working group 制定,在進行資料傳輸之前,ssh先對聯機資料報通過加密技術進行加密處理,加密後在進行資料傳輸。確保了傳遞的資料安全。ssh 通訊過程一般分為5個階段 具體就不記錄了。1 版本協商階段 2 金鑰...
ssh 登入 SSH兩種登入驗證方式
ssh是一種協議標準,其目的是實現安全遠端登入以及其它安全網路服務。ssh登入主要分為兩個階段 1 協商客戶端和服務端雙方通訊所使用的共享金鑰,並用這個共享金鑰實現後續會話過程的對稱加密 2 使用非對稱加密方式驗證客戶端的身份。圖 1 交換共享秘鑰 1 客戶端發起tcp連線請求 2 伺服器返回其支援...