搭架SSH伺服器學習筆記

來源:互聯網
上載者:User
文章目錄
  • 4.2.1. 原理
  • 4.2.2. 通訊過程
  • 4.2.3. 配置方法
  • 4.2.4. 公開金鑰認證無需輸入口令
1. 背景:

         安全殼層協議(Secure Shell,SSH)是目前應用較多的一個網路安全性通訊協定。它為網路上傳輸的資料提供機密性、完整性、認證性等安全服務。

最近在研究git伺服器,要使用ssh協議,需要搭架ssh伺服器,這是第一次搭架,做下筆記,以供參考,以下是我的應用程式環境:

C/S

作業系統

軟體

IP地址

SSH服務端

Linux(debian)

OpenSSH

192.168.1.101

SSH用戶端

Windows XP

Copssh

192.168.1.100

 

ssh用戶端有很多選擇,可以到這裡看看:

http://en.wikipedia.org/wiki/Comparison_of_SSH_clients

2. linux上安裝OpenSSH

◆如果要下載源碼安裝,可以到以下幾個連結下載:

官網:http://www.openssh.com/

下載:http://www.openssh.com/openbsd.html

◆我選擇直接從軟體包安裝:

#apt-get install ssh

以上命令安裝同時安裝了openssh-server和openssh-client,你也可以有選擇性的安裝:

#apt-get install openssh-server

#apt-get install openssh-client

安裝完後應該會自動運行ssh服務,可以通過以下指令確認:

#ps aux|grep ssh

 

3. Windows XP上安裝CopSSH

官網:https://www.itefix.no/i2/copssh

安裝過程很簡單,一直“下一步”即可。

4. SSH登陸

         SSH提供了兩種認證方式:口令認證和密鑰認證。在Windows XP安裝完CopSSH後,在開始菜單 > CopSSH > 03. Start a Unix BASH Shell啟動Shell視窗,在這裡就可以使用ssh命令。

4.1. 口令認證

用伺服器上的root身份登陸:

第一次登陸時,會提示無法建立/home/Administrator/.ssh目錄,你可以用以下命令建立該目錄:

$ mkdir –p  /home/Administrator/.ssh

同時,你第一次登入某一個遠程主機時,會出現沒有找到遠程主機密鑰的提示資訊。輸入"yes"後,系統會將遠程主機的密鑰加入到你的主目錄下的/home/Administrator/.ssh/known_hosts檔案中。以後登入就不會再提示了,直接輸入伺服器帳號root的密碼即可登入。

         登陸後,你就可以遠程動作伺服器了,要登出,用exit或者logout命令。

4.2. 密鑰認證

基於口令的認證,需要在使用者每次登入的時候都輸入使用者名稱和口令,顯得比較麻煩。而基於公用密鑰的認證,只需要在第一次輸入密鑰口令,就可以不需要再次輸入,一次分發密鑰後,驗證將由程式自動進行,且安全性比基於口令方式更強。

4.2.1. 原理

SSH雙方,通過相應帳號主目錄下的.ssh目錄中的用戶端金鑰組id_rsa、id_rsa.pub檔案和服務端authorized_keys檔案中密鑰進行驗證。

id_rsa

自己的rsa私密金鑰

id_rsa_pub

自己的rsa公開金鑰

authorized_keys

存放rsa用戶端的公開金鑰

4.2.2. 通訊過程

◆用戶端向ssh伺服器發出串連請求,請求用密匙進行安全驗證,該請求包含請求的帳號和自己的公開金鑰。

◆ssh伺服器收到請求後,先在伺服器的使用者目錄下對應帳號目錄中尋找你的公用密鑰(如/root/.ssh/authorized_keys檔案中),如果找到的公開金鑰與用戶端發來的公開金鑰一致,則開始進行下一步“質詢”。

◆伺服器用該公開金鑰加密“質詢”(challenge)資訊,並發送紿用戶端。

◆用戶端收到加密的質詢資訊後,用自己的金鑰組其解密,並將解密後的資訊發送回伺服器。

◆伺服器驗證用戶端返回的質詢資訊正確後,驗證結束,雙方開始通訊。

4.2.3. 配置方法

在用戶端用以下指令產生金鑰組檔案(補充:後來發現最好是用ssh-keygen -t rsa,有次我在CentOS系統上運行ssh-keygen產生的金鑰組就不是rsa的):

         之後將產生的id_rsa.pub檔案內容附加到伺服器對應帳號下的authorized_keys檔案末尾即可,如果沒有該檔案則建立一個,如:/root/.ssh/authorized_keys。有以下兩種操作方法:

◆遠程操作

$ ssh-copy-id -i  ~/.ssh/id_rsa.pub  root@192.168.1.101

在CopSSH的Shell中沒法用ssh-copy-i命令,如果用戶端是安裝在linux就可以用該命令了。

◆檔案拷貝到伺服器上操作

         先在用戶端用scp命令將檔案拷貝到遠程伺服器:

         然後登陸到伺服器,在伺服器上操作,將檔案id_rsa.pub追加到authorized_keys檔案中。操作如下:

4.2.4. 公開金鑰認證無需輸入口令

按以上任一方法配置,以後登陸就無需輸入密碼,如所示:

 

 

4.3. 設定主機別名

實際應用中,可能同時需要多套公開金鑰/私密金鑰對。在使用ssh-keygen命令時需要通過-f參數指定不同的私密金鑰名稱。用法如下:

$ ssh-keygen -f ~/.ssh/<filename>

指定有意義的<filename>名稱,命令執行後,會在~/.ssh目錄下建立指定的公開金鑰/私密金鑰對:檔案<filename>是私密金鑰,檔案<filename.pub>是公開金鑰。

         將新生的公開金鑰追加到伺服器主機登陸使用者主名錄下的.ssh/authorized_keys檔案中,就可以使用新建立的公開金鑰建立到遠程主機<server>的<user>賬戶的無口令登陸。

         現在客服端存在多個公開金鑰/私密金鑰對,那麼當執行下面的ssh登陸指令時,用到的是哪個公開金鑰呢?

$ ssh <user>@<server>

         當然是預設公開金鑰~/.ssh/id_rsa.pub。那麼如何用建立的公開金鑰串連server呢?

         SSH的用戶端設定檔~/.ssh/config可以通過建立主機別名,在串連主機時選擇使用特定的公開金鑰。例如~/.ssh/config檔案中的下列配置:

host hr

 
user root

 
hostname 192.168.1.101

 
port 22

 
identityfile ~/.ssh/id_rsa

 

host hj

 
user root

 
hostname 192.168.1.101

 
port 22

 
identityfile ~/.ssh/jiajia

         可以使用下面的SSH登陸命令,

$ ssh hr    // 相當於用私密金鑰id_rsa檔案登陸root@192.168.1.101伺服器

$ ssh hj    // 相當於用私密金鑰jiajia檔案登陸root@192.168.1.101伺服器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.