天天看點

SSH與openssh

1. ssh概述

ssh是(Secure SHell protocol) 的簡寫,安全外殼協定(SSH)是一種在不安全網絡上提供安全遠端登入及其它安全網絡服務的協定。

2. ssh 主要功能

一個就是類似 telnet 的遠端聯機使用 shell 的伺服器,即 ssh 另一個就是類似 FTP 服務的 sftp-server ,提供更安全的 FTP 服務

3. ssh 工作原理

<a href="http://img1.51cto.com/attachment/201306/5/2033581_1370395219gVGN.jpg" target="_blank"></a>
SSH與openssh
伺服器建立公鑰: 每一次啟動 sshd 服務時,該服務會主動去找 /etc/ssh/ssh_host* 的檔案,若系統剛剛安裝完成時,由于沒有這些公鑰,是以 sshd 會主動去計算出這些需要的公鑰,同時也會計算出伺服器自己需要的私鑰 用戶端主動聯機請求: 若用戶端想要聯機到 ssh 伺服器,則需要使用适當的用戶端程式來聯機,包括 ssh, putty 等用戶端程式連接配接 伺服器傳送公鑰給用戶端: 接收到用戶端的要求後,伺服器便将第一個步驟取得的公鑰傳送給用戶端使用 (此時應是明碼傳送,反正公鑰本來就是給大家使用的) 用戶端記錄并比對伺服器的公鑰資料及随機計算自己的公私鑰: 若用戶端第一次連接配接到此伺服器,則會将伺服器的公鑰記錄到用戶端的使用者家目錄内的 ~/.ssh/known_hosts 。若是已經記錄過該伺服器的公鑰,則用戶端會去比對此次接收到的與之前的記錄是否有差異。若接受此公鑰, 則開始計算用戶端自己的公私鑰 回傳用戶端的公鑰到伺服器端: 使用者将自己的公鑰傳送給伺服器。此時伺服器:具有伺服器的私鑰與用戶端的公鑰,而用戶端則是: 具有伺服器的公鑰以及用戶端自己的私鑰,你會看到,在此次聯機的伺服器與用戶端的密鑰系統 (公鑰+私鑰) 并不一樣,是以才稱為非對稱加密系統 開始雙向加解密: (1)伺服器到用戶端:伺服器傳送資料時,拿使用者的公鑰加密後送出。用戶端接收後,用自己的私鑰解密 (2)用戶端到伺服器:用戶端傳送資料時,拿伺服器的公鑰加密後送出。伺服器接收後,用伺服器的私鑰解密,這樣就能保證通信安全

4. ssh 組成

(1). ssh 協定使用的是tcp 22号端口,telnet 使用的是tcp 的23号端口,ssh協定是C/S架構,分為伺服器端與用戶端。 (2). 伺服器端的程式有 sshd 用戶端的程式有,Windows下 putty,SecureCRT,SSHSSH Secure Shell Client …… Linux下有,ssh

5. ssh 工具實作

OpenSSH 包括sshd主程式與ssh用戶端

6. sshd 配置檔案詳解

vim /etc/ssh/sshd_config #1. SSH Server 全局設定,port ,協定 …… # Port 22  #預設端口,也可以使用多個端口 Protocol 2 #協定版本号 # ListenAddress 0.0.0.0 #預設值是監聽所有接口的 SSH 要求 # PidFile /var/run/sshd.pid #放置 SSHD 這個 PID 的檔案 # LoginGraceTime 2m #2分鐘之内不輸入密碼,自動斷開 # Compression delayed  #使用壓縮資料模式進行傳輸,登入後才将資料壓縮 (delayed) #2. 主要私有Key 存放檔案 # HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私鑰 # HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私鑰 # HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私鑰
#3. 關于登入檔案的資料與daemon的名稱 SyslogFacility AUTHPRIV #記錄日志/var/log/secure # LogLevel INFO #日志等級 #4. 安全設定 # PermitRootLogin yes #是否允許 root 登入 # StrictModes yes #是否讓 sshd 去檢查使用者家目錄或相關檔案的權限資料 # PubkeyAuthentication yes #使用密鑰登入系統 # AuthorizedKeysFile .ssh/authorized_keys #使用者登入公鑰存放位置 PasswordAuthentication yes #登入密碼認證 # PermitEmptyPasswords no #否允許以空的密碼登入 # RhostsAuthentication no #系統不使用 .rhosts認證 # IgnoreRhosts yes #是否取消使用 ~/.ssh/.rhosts 來做為認證 # RhostsRSAAuthentication no #專門給 version 1 用的,使用 rhosts 檔案在 /etc/hosts.equiv # HostbasedAuthentication no #上面的項目類似,不過是給 version 2 使用的 # IgnoreUserKnownHosts no #是否忽略家目錄内的 ~/.ssh/known_hosts ChallengeResponseAuthentication no #允許任何的密碼認證 UsePAM yes #利用 PAM 管理使用者認證,可以記錄與管理 #5. 登入後項目 # PrintMotd yes #登入後是否顯示出一些資訊 # PrintLastLog yes #顯示上次登入的資訊 # TCPKeepAlive yes #當達成聯機後,伺服器會一直傳送 TCP 封包給用戶端以判斷對方式否一直存在聯機 UsePrivilegeSeparation yes #是否權限較低的程式來提供使用者操作 MaxStartups 10 #同時允許幾個尚未登入的聯機畫面 DenyUsers * #設定受阻止的使用者名稱 DenyUsers test  #阻止使用者 DenyGroups test #阻止組 本文轉自飛奔的小GUI部落格51CTO部落格,原文連結http://blog.51cto.com/9237101/1879333如需轉載請自行聯系原作者 ziwenzhou