1. ssh概述
ssh是(Secure SHell protocol) 的簡寫,安全外殼協議(SSH)是一種在不安全網絡上提供安全遠程登錄及其它安全網絡服務的協議。
2. ssh 主要功能
一個就是類似 telnet 的遠程聯機使用 shell 的服務器,即 ssh
另一個就是類似 FTP 服務的 sftp-server ,提供更安全的 FTP 服務
3. ssh 工作原理
服務器建立公鑰: 每一次啟動 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 …… 。
OpenSSH 是一組安全遠程的連接工具,主要包括了幾個部份:ssh、sshd、scp、sftp、ssh-keygen、ssh-agent、ssh-add等
ssh(SSH 客戶端,用於登錄建立連接,是 rlogin 與 Telnet的安全替代方案)
sshd (SSH 服務端,典型的獨立守護進程)
scp、sftp (文件安全傳輸工具,rcp、ftp 安全的替代方案)
ssh-keygen (用於產生 RSA 或 DSA 密鑰)
ssh-agent、ssh-add(幫助用戶不需要每次都要輸入金鑰密碼的工具)
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)