SSH 協議與OpenSSH詳解

2021-06-28 02:46:55 字數 4592 閱讀 3858

1. ssh概述

ssh是(secure shell protocol) 的簡寫,安全外殼協議(ssh)是一種在不安全網路上提供安全遠端登入及其它安全網路服務的協議。

2. ssh 主要功能

3. ssh 工作原理

伺服器建立公鑰: 每一次啟動 sshd 服務時,該服務會主動去找 /etc/ssh/ssh_host* 的檔案,若系統剛剛安裝完成時,由於沒有這些公鑰,因此 sshd 會主動去計算出這些需要的公鑰,同時也會計算出伺服器自己需要的私鑰

客戶端主動聯機請求: 若客戶端想要聯機到 ssh 伺服器,則需要使用適當的客戶端程式來聯機,包括 ssh, putty 等客戶端程式連線

伺服器傳送公鑰給客戶端: 接收到客戶端的要求後,伺服器便將第乙個步驟取得的公鑰傳送給客戶端使用 (此時應是明碼傳送,反正公鑰本來就是給大家使用的)

客戶端記錄並比對伺服器的公鑰資料及隨機計算自己的公私鑰: 若客戶端第一次連線到此伺服器,則會將伺服器的公鑰記錄到客戶端的使用者家目錄內的 ~/.ssh/known_hosts 。若是已經記錄過該伺服器的公鑰,則客戶端會去比對此次接收到的與之前的記錄是否有差異。若接受此公鑰, 則開始計算客戶端自己的公私鑰

回傳客戶端的公鑰到伺服器端: 使用者將自己的公鑰傳送給伺服器。

此時伺服器:具有伺服器的私鑰與客戶端的公鑰,而客戶端則是: 具有伺服器的公鑰以及客戶端自己的私鑰,你會看到,在此次聯機的伺服器與客戶端的金鑰系統 (公鑰+私鑰) 並不一樣,所以才稱為非對稱加密系統

開始雙向加解密:

(1)伺服器到客戶端:伺服器傳送資料時,拿使用者的公鑰加密後送出。客戶端接收後,用自己的私鑰解密 (2)客戶端到伺服器:客戶端傳送資料時,拿伺服器的公鑰加密後送出。伺服器接收後,用伺服器的私鑰解密,這樣就能保證通訊安全

在上述的第 4 步驟中,

客戶端的金鑰是隨機運算產生於本次聯機當中的,所以你這次的聯機與下次的聯機的金鑰可能就會不一樣啦!

此外在客戶端的使用者家目錄下的 ~/.ssh/known_hosts 會記錄曾經聯機過的主機的 public key ,

用以確認我們是連線上正確的那部伺服器。

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 ,協議 ……

#2. 主要私有key 存放檔案

#3. 關於登入檔案的資料與daemon的名稱

#4. 安全設定

#5. 登入後專案

#6. sftp 設定

7. sftp 講解  

(1). 使用方式:sftp root@localhost

(2). sftp 支援的命令

針對遠端伺服器主機 (server) 的行為

8. 遠端檔案直接複製 scp

1

2

scp[-pr] [-l 速率]file[賬號@]主機:目錄名#上傳

scp[-pr] [-l 速率] [賬號@]主機:file目錄名

選項與引數:

1

2

3

-p :保留原來檔案的許可權資料

-r :複製**為目錄時,可以複製整個目錄 (含子目錄)

-l :可以限制傳輸的速度,單位為 kbits/s,例如 [-l 800] 代表傳輸速限 100kbytes/s

案例:

1

2

scp/etc/hosts* [email protected]:~#上傳

scp[email protected]:/etc/bashrc/tmp

9. ssh的認證方式

基於口令的認證:這個就不用說了,就是輸入使用者名稱和密碼

基於金鑰的認證,具體步驟如下

(1).客戶端建立兩把鑰匙(公鑰與私鑰)

1

2

3

4

5

6

ssh-keygen [-t rsa|dsa]#可選 rsa 或 dsa

[root@localhost ~]# ssh-keygen #預設演算法

[root@localhost ~]# ls -l .ssh/

total 8

-rw------- 1 root root 1675 may 27 03:05 id_rsa

-rw-r--r-- 1 root root  408 may 27 03:05 id_rsa.pub

(2).將公鑰資料上傳到伺服器上

scp ~/.ssh/id_rsa.pub [email protected]:~ #上傳到 root 的家目錄底下即可

(3).將公鑰放置伺服器端的正確目錄與檔名(scp 或 ssh-copy-id)

方法一 scp

方法二 ssh-copy-id

命令格式:ssh-copy-id –i /path/to/pubkey username@ermote_host

案例:ssh-copy-id –i .ssh/id_rsa.pub [email protected]

10. sshd 管理細則

本文出自 「share your knowledge …」 部落格,請務必保留此出處

ssh 是登入遠端伺服器進行工作,

sftp

是secure file transfer protocol的縮寫,安全

檔案傳送協議

。可以為傳輸檔案提供一種安全的加密方法。

sftp

與 ftp 有著幾乎一樣的語法和功能。sftp 為 

ssh的一部份,是一種傳輸檔案至 blogger 伺服器的安全方式。其實在ssh

軟體包中,已經包含了乙個叫作sftp(secure file transfer protocol)的安全

檔案傳輸

子系統,sftp本身沒有單獨的

守護程序

,它必須使用sshd守護程序(

埠號預設是22)來完成相應的連線操作,所以從某種意義上來說,sftp並不像乙個

伺服器程式,而更像是乙個客戶端程式。sftp同樣是使用加密傳輸認證資訊和傳輸的資料,所以,使用sftp是非常安全的。但是,由於這種傳輸方式使用了加密/

解密技術

,所以傳輸效率

比普通的

ftp要低得多,如果您對網路安全性要求更高時,可以使用sftp代替ftp。

windows中可以使用core ftp,filezilla, winscp,

xftp來連線

linux下直接在終端中輸入:sftp username@remote ip(or remote host name)。出現驗證時,只需填入正確的密碼即可實現遠端鏈結。登入成功後終端呈現出:sftp>....

上傳:put /path/filename(本地主機) /path/filename(遠端主機);

本地主機)。

另外提一下sftp在非正規埠(正規的是22號埠)登入:sftp -o port=1000 username@remote ip.

ssh 和 openssh 的區別

1.ssh概述 ssh是 secure shell protocol 的簡寫,安全外殼協議 ssh 是一種在不安全網路上提供安全遠端登入及其它安全網路服務的協議。2.ssh 主要功能 乙個就是類似 telnet 的遠端聯機使用 shell 的伺服器,即 ssh 另乙個就是類似 ftp 服務的 sft...

SSH學習之四OpenSSH安全

openssh是linux unix下一款加密通訊軟體,同時也是我們用來遠端控制linux unix伺服器重要的必裝軟體。對於各版本的linux及unix發行版而言,openssh的配置檔案位置都各不一樣。如ubuntu下openssh配置檔案就在 etc ssh sshd config。opens...

OpenSSH 配置檔案詳解

第1章 openssh 安全網路通訊 本章要點 關於openssh openssh客戶端 起步 使用ssh和scp openssh伺服器sshd 起步 啟動sshd守護程序 授權金鑰 自動化登入 故障診斷 隧道技術與埠 openssh是一套安全網路連線工具,用來取代telnet rcp rsh rs...