SSH(Secure SHell)使用


SSH(Secure SHell)使用

1. 什么是SSH?

傳統的網絡服務程序,如ftp,pop和telnet在本質上是不安全的,因為它們使用明文
傳送口令和數據,很容易被冒充真正服務器的中間人修改通信數據,影響你的正常通信。
 
SSH可以對你的數據進行加密,所以可以防止"中間人"攻擊,DNS和IP欺騙,還一個
好處是它對傳輸數據進行了壓縮,可以加快傳輸的速度。
 
現在一般使用的是OpenSSH 2.X,免費,而且同時支持1.x和2.x的版本。

2. SSH是如何工作的?

從客戶端來看,SSH提供兩種級別的安全驗證:
1. 基於口令的安全驗證,只要知道自己的賬號和密碼就可以登錄遠程的主機,數據也都是
加密的,但不能確定的是正在連接的服務器是不是你想到登錄的服務器,也有可能受到"中間人"
的攻擊
 
2. 基於密匙的安全驗證,需要自己創建一對密匙,並把公用密匙放在服務器上。如果你需要
連接到SSH服務器上,客戶端就會向服務器端發出請求,請求用你的密匙進行安全驗證。服務器
收到請求之后,先在服務器上找到公用密匙,再用這個密匙和你發送過來的進行比對。如果兩個
密匙一致,服務器就用公用密匙加密"質詢"(challenge)並把它發送給客戶端。客戶端軟件收到
質詢之后再用你的私人密匙進行解密再把它發給服務器。
 
第二種方式更安全,數據加密,但登錄時間可以比較長。
 

3. 為什么要采用第二種方法登錄?

采用密碼登錄的缺點:
a)用戶無法設置空密碼(即使系統允許空密碼,也會十分危險)
b)密碼容易被人偷窺或猜到
c)服務器上的一個帳戶若要給多人使用,則必須讓所有使用者都知道密碼,
導致密碼容易泄露,而且修改密碼時必須通知所有人
 
而采用公鑰可以解決以上問題:
a)公鑰認證允許使用空密碼,省去每次登錄都需要輸入密碼的麻煩
b)多個使用者可以通過各自的密鑰登錄到系統上的同一個用戶
c)即使修改了對應用戶的密碼,也不會影響登陸
d)若同時禁用密碼認證,則只要保證私鑰的安全,不會受到暴力破解的威脅

4. 本機Win 7和Virtual box虛擬機ubuntu之間的實驗

4.1 進行ssh的密碼口令連接

1. 需要在VB中設置連接方式由NAT改為Bridge
 
2. 使用"sudo apt-get install openssh-server"幫Ubuntu安裝ssh服務器,
使用"sudo service ssh start"啟動ssh服務 
可以使用命令ps -e|grep ssh來查看是否成功啟動
 
如果沒有啟動,可以使用命令sudo /etc/init.d/ssh start啟動服務
 
3. 在Windows即主機中使用Putty登錄Ubuntu,輸入Ubuntu的ip地址即可,
其他默認。putty的下載地址:
 
 
4. 輸入用戶名和密碼就可以遠程登錄ubuntu了
 

4.2 進行ssh的密鑰連接-在Win 7下制作密鑰

4.2.1 使用puttygen制作密鑰
密鑰包括私鑰和公鑰。
下載地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
啟動puttygen,為了兼容openssh密鑰,選擇"SSH2 RSA",點擊Generate,
並在窗口的空白區域隨意移動鼠標以獲得生成密鑰的隨機數據,直到進度條結束為止。
 
完成效果為:
 
輸入key passphrase和confirm passphrase,類似私鑰密碼,點擊"Save private key"。
公鑰信息在上面的文本框中,等下需要復制到ubuntu系統的特定文件中。
 
可以看到私鑰的保存內容包含了公鑰和私鑰。
4.2.2 修改ubuntu系統中openssh的配置
修改/etc/ssh/sshd_config:
PermitRootLogin no  # 禁止root用戶登陸
StrictModes yes  # 檢查密鑰的用戶和權限是否正確,需要是authorized_keys文件一定為644權限,默認是打開的
RSAAuthentication yes        # 啟用 RSA 認證
AuthorizedKeysFile     .ssh/authorized_keys   # 驗證公鑰的存放路徑
PubkeyAuthentication yes     # 啟用公鑰認證
PasswordAuthentication no    # 禁止密碼認證,只能進行密鑰連接,默認是打開的。
ChallengeResponseAuthentication no  #關閉挑戰應答方式
UsePAM no  #不使用PAM認證
以上參數可以根據需要進行調整。
 
然后重啟sshd服務:
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
或者直接:
sudo /etc/init.d/ssh restart
4.2.3 拷貝公鑰信息到ubuntu的特定文件中
在之前的窗口中,拷貝公鑰內容,並寫入~/.ssh/authroized_keys文件下
 
 如果沒有.ssh目錄和authroized_keys文件,需要自己創建,並且要修改目錄和文件的權限
>mkdir ~/.ssh
>chmod 700 ~/.ssh
>emacs ~/.ssh/authorized_keys
>chmod 644 ~/.ssh/authorized_keys
 
644權限代表別人不能對此文件進行寫操作,用來保護別人不能隨意把他的
公鑰寫進去。
4.2.4 使用putty進行密鑰登錄
在Connection->SSH->Auth中選擇私鑰文件:
 
在Connection->Data中寫入你的登錄時用的用戶名
 
也要在Session那寫在ubuntu系統的IP,再點擊open按鈕。
這個時候,需要輸入passphrase密碼,也就是私鑰密碼。這個密碼的作用是保護
私鑰文件,就算別人得到你的私鑰文件,沒有這個密碼也不能進行登錄。

4.3 進行ssh的密鑰連接-在Ubuntu下制作密鑰

4.3.1 在Linux下生成密鑰
在命令行下運行:
> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/compilers/.ssh/id_rsa):  #輸入私鑰保存地址
Enter passphrase (empty for no passphrase):  #輸入私鑰密碼
Enter same passphrase again:  #確認密碼
Your identification has been saved in /home/compilers/.ssh/id_rsa.
Your public key has been saved in /home/compilers/.ssh/id_rsa.pub.
The key fingerprint is:
e7:f6:98:57:f0:d9:93:54:30:76:9f:10:09:c0:f8:b9 compilers@compilers-vm
The key's randomart image is:
+--[ RSA 2048]----+
|        o....o*..|
|       . .   o.o+|
|        . .    .o|
|         o  .  . |
|        S o  o.o.|
|         E    +o.|
|          o  .  .|
|         . +.    |
|          o..    |
+-----------------+
4.3.2 把公鑰寫入authorized_keys文件中
> cd ~/.ssh
> cat id_rsa.pub >> quthorized_keys #需要換行加入新的內容
4.3.3 生成putty私鑰
1. 把id_rsa傳到windows系統上。
2. 使用puttygen的"Load private key"讀取id_rsa文件,並輸入私鑰密碼:
 
文本框里的內容應該和id_rsa.pub中的一致。點擊"Save private key"保存私鑰。
4.3.4 使用putty進行密鑰登錄
那就是和之前一樣的操作:
 
 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM