SSH協議詳解

OpenSSH

一、 前言

使用SSH可以在本地主機和遠程服務器之間進行加密地傳輸數據,實現數據的安全。而OpenSSH是SSH協議的免費開源實現,它采用安全、加密的網絡連接工具代替了telnet、ftp等古老明文傳輸工具。

SSH(Secure Shell)是建立在應用層和傳輸層基礎上的安全協議。SSH是目前較可靠,專為遠程登陸會話和其他網絡服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。

SSH可以將所有的傳輸數據加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也可以防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據經過壓縮的,可以加快傳輸的速度。

二、 SSH工作原理

SSH是由服務端和客戶端的軟件組成,服務端是一個守護進程,它在后臺運行并響應來自客戶端的連接請求。

SSH的工作機制大體是:本地客戶端發送一個連接請求到遠程的服務端,服務端檢查申請的包和IP地址再發送密鑰給SSH客戶端,本地再將密鑰發回給服務端,到此為止,連接建立。

啟動SSH服務器后,sshd進程運行并在默認的22端口進行監聽。安全驗證方式:

基于口令的安全驗證(賬號密碼),也有可能受到中間人攻擊

基于密鑰的安全驗證,就是提供一對密鑰,把公鑰放在需要訪問的服務器上,如果連接到SSH服務器上,客戶端就會向服務器發出請求,請求用密鑰進行安全驗證,服務器收到請求之后,先在改服務器的主目錄下尋找公鑰,然后把它和發送過來的公鑰進行比較。如果兩個密鑰一致,服務器就用公鑰加密“質詢”并把它發送給客戶端??蛻舳耸盏健百|詢”之后就可以用私鑰解密再把它發給服務器端?;谶@種方式,相對比較安全。

三、OpenSSH服務器安裝和配置,客戶端一般都有

先查看Linux系統中openssh-server、openssh、openssh-clients、openssh-askpass軟件包是否已經安裝,如果沒有則安裝。

SSH協議詳解

依賴關系太多了,固用yum方式安裝:yum install openssh-askpass -y

SSH協議詳解

好了,都裝好了。

四、客戶端配置

ssh: 配置文件 /etc/ssh/ssh_config

1、客戶端程序

ssh [options] [user@]host [COMMAND]
ssh [-l user] [options] host [COMMAND]

常用選項:
-l user:以指定的用戶登錄遠程主機;
-p port:用于指明遠程服務器的端口;遠程服務器端口可變。
-X:支持 X11 轉發;
-Y:支持信任的 X11 轉發;
    X:協議; x-window, C/S
    X11 轉發的作用:在本地顯示遠程主機上的圖形窗口;
    前提:本地是 X 圖形界面,或者提供了 x service;
-o StrictHostKeyChecking=no  是不是要對主機嚴格檢查,建議no。


ssh 支持的用戶認證方式:
    基于口令的認證;
    基于密鑰的認證;
(1) 在本地主機生成一對兒密鑰:
    ssh-keygen [-q] [-b bits] [-t type] [-f output_keyfile] [-P passphrase]

    -t {rsa|ecdsa|dsa}:公鑰加密算法類型;
    -b bits:指明密鑰長度;
    -P passphrase:私鑰加密密碼;
    -f output_keyfile:生成密鑰的保存位置;

(2) 在本地主機上,將公鑰復制到要登錄的遠程主機的某用戶的家目錄下的特定文件中(~/.ssh/authorized_keys)

    ssh-copy-id [-i [identity_file]] [-p port] [-o ssh_option][user@]hostname

(3) 測試
    ssh user@host

例子:客戶端ip:192.168.1.120 服務端ip:192.168.1.109

SSH協議詳解


生成公鑰:

SSH協議詳解


測試:

SSH協議詳解


SSH協議詳解


刪除密鑰 :rm -rf .ssh/id_rsa*

2、scp命令,類似與cp

將本地的/etc/fstab 復制到服務端主機的/tmp目錄下

SSH協議詳解

SSH協議詳解

將遠程主機上的的/root/1.sh復制過來

SSH協議詳解

3、sftp安全的文件傳輸程序,類似于ftp,它的所有操作都是加密ssh傳輸。

連接至遠程主機,可以get一些資源

SSH協議詳解

五、服務器端配置

sshd:配置文件 /etc/ssh/sshd_config

幾個主要的配置如下:

Port 22   服務器監聽的端口,默認為22

ListenAddress 0.0.0.0   服務器端的ip地址
Protocol 2              ssh protocol有兩個版本,1不安全
PermitRootLogin yes 設置root用戶能否使用ssh登陸  建議用no
UseDNS no   要不要反解用戶的主機名

限制可登錄的用戶(配置文件):
    AllowUsers user1 user2 user3 ...   白名單
    AllowGroups grp1 grp2 ...
    DenyUsers user1 user2 ...
    DenyGroups grp1 grp2 ...        黑名單

CentOS 6:
    服務腳本:/etc/rc.d/init.d/sshd
CentOS 7:
    Systemd Unit File:/usr/lib/systemd/system/sshd.service

六、ssh 服務的最佳實踐:

1、不要使用默認端口;

2、禁止使用 protocol version 1;

3、限制可登錄的用戶;

4、設定空閑會話超時時長;

5、利用防火墻設置 ssh 訪問策略;

6、僅監聽特定的 IP 地址;

7、基于口令認證時,使用強密碼策略; tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs

8、使用基于密鑰的認證;

9、禁止使用空密碼;

10、禁止 root 用戶直接登錄;

11、限制 ssh 的訪問頻度和并發在線數;

12、做好日志,經常分析; /var/log/secure

原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/63909

(4)
N24_yeziN24_yezi
上一篇 2016-12-16
下一篇 2016-12-17

相關推薦

  • 二.Linux博客-2016年7月21日screen、echo

    格式說明: 操作 概念 命令 說明及舉例 二.screen、echo internet 因特網ethernet 以太網ctrl+alt+F1 圖形界面ctrl+alt+F2-F6 字符界面 命令:who am i/who/who me i/tty/df/ifconfig/w/ halt 關機 reboot&n…

    Linux干貨 2016-08-24
  • Linux設備驅動Hello World程序介紹

    by Valerie Henson07/05/2007 (譯者注:本文的例子是只能在linux的2.6內核下使用的,2.6以上的內核,譯者沒有做過實驗,2.4是要修改make文件才能運行。) 本文的出處:這里 自古以來,學習一門新編程語言的第一步就是寫一個打印“hello world”的程序(可以看《hello world 集中營》這個帖子供羅列了300個“…

    Linux干貨 2015-04-01
  • Mysql 報錯解決–PID file could not be found!

    今天想把之前在cetnos6上編譯安裝的mariadb改下PATH環境變量,操作幾次之后,關閉或重啟mysql就失敗了,提示如下: [root@web1 ~]# service mysqld stop MySQL server PID file could not&nb…

    系統運維 2016-09-19
  • 文件通配符練習

    課后資料補充 * : 通配符,代表任意字符(0到多個)? : 通配符,代表一個字符# : 注釋/ : 跳轉符號,將特殊字符或通配符還原成一般符號| : 分隔兩個管線命令的界定; : 連續性命令的界定~ : 用戶的根目錄$ : 變量前需要加的變量值! : 邏輯運算中的&q…

    Linux干貨 2016-08-08
  • Nginx基礎整理

    目錄結構如下: Nginx基礎知識Nginx HTTP服務器的特色及優點 Nginx的主要企業功能 Nginx作為web服務器的主要應用場景包括: Nginx的安裝安裝環境 快速安裝命令集合 各個命令解釋 腳本 注意 安裝故障總結故障一:沒有安裝pcre或pcre-devel 故障二:沒有安裝openssl和openssl-devel 常用的Nginx ht…

    Linux干貨 2017-08-29
  • 8-8 sed 練習

    8-8 作業 1. 如何設置tab縮進為4個字符? 2. 復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log; 3. 刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號;

    Linux干貨 2016-08-12

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-23 12:18

    贊,能將上面知識靈活運用于實戰會更好~~繼續加油~

欧美性久久久久