Linux下 SSH遠程管理服務

来源:https://www.cnblogs.com/wenrulaogou/archive/2018/09/10/9620677.html
-Advertisement-
Play Games

第1章 SSH基本概述 1.1 SSH服務協議說明 SSH 是 Secure Shell Protocol 的簡寫,由 IETF 網路工作小組(Network Working Group )制定 在進行數據傳輸之前,SSH先對聯機數據包通過加密技術進行加密處理,加密後在進行數據傳輸。確保了傳遞的數據 ...


第1章 SSH基本概述

1.1 SSH服務協議說明

SSH 是 Secure Shell Protocol 的簡寫,由 IETF 網路工作小組(Network Working Group )制定

在進行數據傳輸之前,SSH先對聯機數據包通過加密技術進行加密處理,加密後在進行數據傳輸。確保了傳遞的數據安全。

SSH是專為遠程登錄會話和其他網路服務提供的安全性協議。利用 SSH 協議可以有效的防止遠程管理過程中的信息泄露問題,在當前的生產環境運維工作中,絕大多數企業普遍採用SSH協議服務來代替傳統的不安全的遠程聯機服務軟體,如telnet(23埠,非加密的)等。

在預設狀態下,SSH服務主要提供兩個服務功能:

一是提供類似telnet遠程聯機伺服器的服務,即上面提到的SSH服務。

另一個是類似FTP服務的sftp-server,藉助SSH協議來傳輸數據的.提供更安全的SFTP服務(vsftp,proftp)。

1.2 SSH遠程服務主要功能

提供遠程連接伺服器的服務
對傳輸的數據進行加密

1.3 遠程連接方式有哪些

ssh屬於密文連接方式 監聽在本地22/tcp埠
telnet屬於明文連接方式 監聽在本地23/tcp埠

1.4 ssh知識要點

ssh是安全的加密協議,用於遠程鏈接linux伺服器

ssh 預設埠是22,安全協議版本sshv2,出來2之外還有1(有漏洞)

ssh服務端主要包括兩個服務功能 ssh遠程鏈接和sftp服務

linux ssh 客戶端包括ssh 遠程鏈接命令,以及遠程拷貝scp命令

1.5 私鑰和公鑰

ssh實現安全鏈接建立,利用鑰匙和鎖頭

1. 鑰匙=私鑰 鎖頭=公鑰,私鑰可以解密公鑰

2. 公鑰可以再網路中傳輸,私鑰再本地主機保存

第2章 SSH相關命令

SSH是典型的客戶端和服務端的交互模式, 客戶端廣泛的支持各個平臺
WIndows有很多工具可以支持SSH連接功能, 建議使用Xshell

2.1 openssh軟體分析

(與數據加密相關的軟體--openssl)

[root@backup ~]# rpm -ql openssh-server

/etc/ssh/sshd_config    --- ssh服務配置文件

/usr/sbin/sshd          --- ssh服務進程啟動命令

[root@backup ~]# rpm -ql openssh-clients

/usr/bin/scp            --- 遠程拷貝命令

/usr/bin/sftp           --- 遠程文件傳輸命令

/usr/bin/slogin         --- 遠程登錄命令

/usr/bin/ssh            --- 遠程連接登錄命令

/usr/bin/ssh-copy-id    --- 遠程分發公鑰命令

ssh客戶端包含ssh以及像scp(遠程拷貝)、slogin(遠程登陸)、sftp(安全FTP文件傳輸)等應用程式。

2.2 ssh遠程登錄伺服器命令

ssh -p22 [email protected] [命令]

 

# SSH連接遠程主機命令的基本語法;

# ssh 命令

# -p(小寫), 用於指定遠程主機埠,預設22埠可省略

# oldboy@remotehost

# "@"前面為用戶名,如果用當前用戶連接,可以不指定用戶

# "@"後面為要連接的伺服器的IP

2.3 scp命令詳解

scp複製數據至遠程主機命令(全量複製)
 SSH連接遠程主機命令的基本語法;

 scp 命令

 -P(大寫) 指定埠,預設22埠可不寫

 -r 表示遞歸拷貝目錄

 -p 表示在拷貝文件前後保持文件或目錄屬性不變

 -l 限制傳輸使用帶寬(預設kb)

2.3.1 推:PUSH,上傳

# scp -P22 -rp /tmp/oldboy [email protected]:/tmp

# /tmp/oldboy為本地的目錄。

# “@”前為用戶名

# “@”後為要連接的伺服器的IP。

# IP後的:/tmp目錄,為遠端的目標目錄。

# 說明: 以上命令作用是把本地/tmp/oldboy推送至遠端伺服器10.0.0.150的/tmp目錄

2.3.2 拉:PULL,下載

# scp -P22 -rp [email protected]:/tmp/oldboy /opt/

# 還可以將遠端目錄或文件拉取至本地

2.3.3 SCP命令結論

scp通過加密進行遠程拷貝文件或目錄的命令。

scp拷貝許可權為連接的用戶對應的許可權。

scp支持數據的推送和拉取,但每次都是全量拷貝,效率低下。

2.4 Sftp命令詳解

Sftp遠程數據傳輸命令

sftp連接遠程

sftp root@192.168.56.12

sftp -oPort=52113 [email protected] <-sftp的特殊埠連接

 

下載文件, 至於本地伺服器

sftp> get conf.txt /tmp/

 

上傳本地伺服器文件, 至遠程伺服器

sftp> put /root/t1.txt /root/

sftp-->XFTP

    1.支持批量上傳文件

    2.支持單個文件超過4G

    3.支持斷點續傳

2.5 SSH服務軟體詳細說明

2.5.1 什麼是ssh服務

SSH服務端是一個守護講程 (daemon).他在後臺運行並響應來自客戶端的連接請求。 SSH服務端的講程名為sshd,負責實時監聽遠程SSH客戶端的遠程連接請求,併進行處理,一般包括公共密鑰認證、密鑰交換、對稱密鑰加密和非安全連接等。這個SSH服務就是我們前面基礎系統優化中保留開機自啟動的服務之。

ssh客戶端包含ssh以及像scp(遠程拷貝) slogin(遠程登陸) sftp(安全FTP文件傳輸)等應用程式。

ssh的工作機制大致是本地的ssh客戶端先發送一個連接請求到遠程的ssh服務端,服務端檢查連接的客戶端發送的數據包和IP地址,如果確認合法,就會發送密鑰給 SSH的客戶端,此時,客戶端本地再將密鑰發回給服務端,自此連接建立。

2.5.2 ssh軟體安裝

客戶端

[root@nfs01 ~]# rpm -qf `which ssh`

openssh-clients-5.3p1-122.el6.x86_64

服務端軟體

[root@nfs01 ~]# rpm -qf `which sshd`

openssh-server-5.3p1-122.el6.x86_64

註意:使用sshd採用絕對路徑進行啟動

[root@test ~]# sshd

sshd re-exec requires execution with an absolute path

第3章 SSH連接方式

3.1 基於賬戶密碼遠程登錄

基於口令的安全驗證的方式就是大家現在一直在用的,只要知道伺服器的SSH連接帳號和口令(當然也要知道對應伺服器的 IP及開放的 SSH埠,預設為22 ),就可以通過 ssh客戶端登錄到這台遠程主機。此時,聯機過程中所有傳輸的數據都是加密的。

知道伺服器的IP埠,賬號密碼, 即可通過ssh客戶端登陸遠程主機, 遠程主機聯機過程中傳輸資料庫都是加密的。

  ~ ssh -p22 [email protected]

root@10.0.0.60's password:

[root@m01 ~]#

3.2 基於秘鑰遠程登錄

預設情況下,通過ssh客戶端登陸遠程伺服器, 需要提供遠程系統上的帳號與密碼,但為了降低密碼泄露的機率和提高登陸的方便性, 建議使用密鑰驗證方式.

 

1.在管理伺服器上生成密鑰,-t密鑰類型, -C指定用戶郵箱

[root@m01 ~]# ssh-keygen -t rsa -C [email protected]

...

預設一路回車即可, 當然也可以根據不同需求進行修改

...

2.將A伺服器上的公鑰推送至B伺服器

命令示例: ssh-copy-id [-i [identity_file]] [user@]machine

ssh-copy-id 命令

-i          指定下發公鑰的路徑

[user@]     以什麼用戶身份進行公鑰分發(root),如果不輸入,表示以當前系統用戶身份分發公鑰

machine     下發公鑰至那台伺服器, 填寫遠程主機IP地址

 

秘鑰分發, [會將A伺服器的公鑰寫入B伺服器~/.ssh/authorized_keys文件中]

[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

3.A伺服器通過密鑰方式連接B伺服器

遠程登錄對端主機方式

[root@m01 ~]# ssh [email protected]

[root@nfs ~]#

不登陸遠程主機執行命令

[root@m01 ~]# ssh [email protected] "hostname -i"

172.16.1.41

可能遇到錯誤

1.no route to host  防火牆

2.Connection refused  防火牆或服務未啟用

3.3 telnet連接

telnet連接 不加密  無法使用root用戶連接

安裝telnet服務,然後使用root登錄測試

[root@web01 ~]# yum install telnet-server -y

[root@web01 ~]# systemctl start telnet.socket

使用xshell的新建標簽,輸入如下指令[登錄不上]

[e:\~]$ telnet 10.0.0.7

Kernel 3.10.0-862.el7.x86_64 on an x86_64

web01 login: root

Password:

Login incorrect

創建一個普通用戶,再次使用telnet登錄測試

[root@web01 ~]# useradd od

[root@web01 ~]# echo "1" | passwd --stdin od

 

[e:\~]$ telnet 10.0.0.7

web01 login: od

Password:

Last login: Mon Sep 10 09:57:39 from ::ffff:10.0.0.1

[od@web01 ~]$

第4章 ssh服務配置文件

配置文件中所有註釋信息,表示預設參數配置

配置文件中#空格 後面內容表示說明信息

              #參數 表示配置參數信息

配置文件參數信息修改後,一旦變為註釋,即還原為預設配置

4.1 ssh服務的配置文件路徑

vim  /etc/ssh/sshd_config

修改SSH服務的運行參數,是通過修改配置文件/etc/ssh/sshd_config實現的。

一般來說SSH服務使用預設的配置已經能夠很好的工作了,如果對安全要求不高,僅僅提供SSH服務的情況,可以不需要修改任何配置。

4.2 配置文件中常用配置說明

[root@backup ~]# vim /etc/ssh/sshd_config

#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

 

# This is the sshd server system-wide configuration file.  See

# sshd_config(5) for more information.

 

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

 

# The strategy used for options in the default sshd_config shipped with

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options change a

# default value.

 

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options change a

# default value.

 

Port 25113                   #

ListenAddress 10.0.0.41      #監聽地址(本地網卡地址),指定本地網卡那個網卡提供服務

PermitRootLogin no           #是否允許root用戶登陸

#PermitEmptyPasswords no     #禁止空密碼登陸

#UseDNS no                   #不使用DNS

GSSAPIAuthentication no      #API認證

連接慢的解決

#AddressFamily any         #指定監聽ipv4地址,或是ipv6地址,或者所有都監聽
 

配置文件內容說明:

井號(#)註釋的參數信息為預設配置

井號(#)後面有空格的為描述信息

井號(#)後面沒有空格的為參數信息

另外:配置文件參數信息修改後,一旦變為註釋,即還原為預設配置

4.3 配置文件語法檢查方法

使用sshd -t 命令 對配置文件的語法進行檢查

正確

[root@backup ~]# sshd -t /etc/ssh/sshd

Extra argument /etc/ssh/sshd.

語法格式有錯誤

[root@test ~]# sshd -t /etc/ssh/sshd_config

/etc/ssh/sshd_config: line 50: Bad configuration option: uthorizedKeysFile

/etc/ssh/sshd_config: terminating, 1 bad configuration options

4.4 SSH配置文件相關參數

 

命令參數

參數說明

Port

指定sshd進程監聽的埠號,預設為22.可以使用多條指令監聽多個埠.

預設將在本機的所有網路接□上監聽,但是可以通過ListenAddress指走只在某個特定的介面上監聽.

PermitEmptyPasswords

是否允許密碼為空的用戶遠程登錄.預設為"no"

PermitRootLogin

是否允許root登錄.可用值如下:"yes"(預設)表示允許."no"表示禁止.

"without-password"表示禁止使用密碼認證登錄."forced-commands-only"表示只有在指走了command選項的情況下才允許使用公鑰認證登錄.同時其它認證方法全部被禁止.這個值常用於做遠程備份之類的事情.

1.多開一個視窗

2.臨時多部署一條連接方式

3.給普通用戶sudo許可權

UseDNS

指定定sshd是否應該對遠程主機名進行反向解折,以檢查此主機名是否與其IP地址真實對應.預設值為"yes”.

ListenAddress

指定監聽並提供服務相應的網卡地址信息


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參數 var list = new List<int>(); // 集合var totalCount = 17; // 總數量var pageSize = 5; // 每頁查詢數量 第一種: var pageTotal = totalCount % pageSize == 0 ? totalCoun ...
  • 之前的博客 將時間作為GUID的方法 中,我使用了鎖。我在實際的使用中,錯將鎖的釋放放在了if語句中,這純粹是我的失誤,導致了很嚴重的錯誤。因此我在想是否有無鎖的將時間作為GUID的方式,答案是使用Interlocked中的 CompareExchange方法,該方法是原子操作。說是無鎖操作,其實就 ...
  • 方法是什麼 方法是C#中將一堆代碼進行進行重用的機制 他是在類中實現一種特定功能的代碼塊,將重覆性功能提取出來定義一個新的方法 這樣可以提高代碼的復用性,使編寫程式更加快捷迅速 方法格式 訪問修飾符 返回類型 方法名稱(參數列表) { 方法體; } 方法是在類或結構中聲明的,聲明時需要訪問修飾符、返 ...
  • 記得前面老周寫過在.net core 中使用 Composition 的爛文。上回老周給大伙伴們介紹的是一個“重量級”版本—— System.ComponentModel.Composition。應該說,這個“重量級”版本是.NET 框架中的“標配”。 很多東西都會有雙面性,MEF 也一樣,對於擴展 ...
  • Docker 相關的基礎知識點非常多,比如基本概念,鏡像管理,數據捲(容器)管理,常用命令,周邊生態等等。在這裡梳理出個大概框架,方便後續學習使用。《Docker 遇見前端》系列文章,旨在分享學習如何通過 docker 構建一個相對完備的前端自動化開發環境。 ...
  • 儘管Linux系統非常強大,穩定,但是我們在使用過程當中,如果人為操作不當,仍然會影響系統,甚至可能使得系統無法開機,無法運行服務等等各種問題。那麼這篇博文就總結一下一些常見的故障排除方法,但是不可能面面俱到,只能不斷的補充,更新。 一、管理員忘記密碼 (1)、重啟電腦,進入單用戶模式 1 2 3 ...
  • Linux 中採用了兩種不同的優先順序範圍,一種是 nice 值,一種是實時優先順序。在上一篇粗略的說了一下 nice 值和實時優先順序,仍有不少疑問,本文來詳細說明一下進程優先順序。linux 內核版本為 linux 2.6.34 。 進程優先順序的相關信息,存放在進程描述符 task_struct 中: ...
  • core dump 某些信號的產生會導致產生core dump,包含了進程終止時的記憶體鏡像。在某些時候這個core文件就非常的有用處,配合gdb或者lldb調試起來非常方便。 更詳細的文檔參考 Linux Manual Page http://man7.org/linux/man pages/man ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...