Linux下的SSH詳解及Ubuntu教程

前言

SSH(Secure Shell)是一種用于計算機之間安全通信的協議,廣泛應用于遠程登錄、系統管理和文件傳輸等場景。本文將詳細介紹SSH在Linux系統(特別是Ubuntu)下的使用,包括安裝、配置、密鑰管理和常見應用,希望能幫助讀者全面掌握SSH的使用。

1. 什么是SSH

SSH是一種網絡協議,用于在不安全的網絡上安全地執行系統管理和文件傳輸等操作。通過加密所有數據,SSH確保了通信的機密性和完整性,防止中間人攻擊和其他安全威脅。

2. SSH的工作原理

SSH主要由以下幾個部分組成:

  • 客戶端:發起連接的一方,通常是用戶的計算機。
  • 服務器:接收連接的一方,通常是遠程主機。
  • 加密技術:SSH使用對稱加密、非對稱加密和哈希函數來保護數據傳輸。

在SSH連接過程中,客戶端和服務器之間會進行以下步驟:

  1. 握手階段:客戶端和服務器交換加密算法,生成會話密鑰。
  2. 用戶認證:用戶通過密碼或密鑰對進行認證。
  3. 會話建立:成功認證后,建立安全的會話通道。
3. 安裝與配置SSH
安裝SSH

在Ubuntu上,可以使用以下命令安裝SSH服務器:

sudo apt update sudo apt install openssh-server

安裝完成后,可以使用以下命令檢查SSH服務的狀態:

sudo systemctl status ssh
配置SSH

SSH的配置文件位于/etc/ssh/sshd_config。可以通過編輯該文件來配置SSH服務器。例如,修改默認端口號和禁用密碼認證:

# 修改端口號 Port 2222 
# 禁用密碼認證 PasswordAuthentication no 
# 僅允許密鑰認證 PubkeyAuthentication yes

編輯完成后,重新啟動SSH服務以使更改生效:

sudo systemctl restart ssh
詳細配置選項
  • PermitRootLogin:控制是否允許root用戶通過SSH登錄。出于安全考慮,通常設置為no

    PermitRootLogin no
  • MaxAuthTries:限制用戶認證失敗的最大次數。

    MaxAuthTries 3
  • AllowUsersDenyUsers:指定允許或拒絕通過SSH登錄的用戶列表。

    AllowUsers user1 user2 
    DenyUsers user3
4. 使用SSH
連接到遠程服務器

使用以下命令連接到遠程服務器:

ssh username@hostname

其中username是遠程服務器上的用戶名,hostname是服務器的主機名或IP地址。

使用SSH密鑰認證

SSH密鑰認證比密碼認證更安全。以下是設置密鑰認證的方法:

  1. 生成密鑰對
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

按提示生成密鑰對,并將公鑰復制到遠程服務器:

ssh-copy-id username@hostname
  1. 禁用密碼認證:編輯/etc/ssh/sshd_config文件,將PasswordAuthentication設置為no,并重啟SSH服務。
PasswordAuthentication no
SSH隧道

SSH隧道用于將本地端口轉發到遠程服務器,或將遠程端口轉發到本地。例如,將本地端口8080轉發到遠程服務器的8080端口:

ssh -L 8080:localhost:8080 username@hostname

反向端口轉發:

ssh -R 9090:localhost:80 username@hostname
文件傳輸

使用scp命令進行文件傳輸:

# 從本地復制到遠程 
scp localfile.txt username@hostname:/remote/directory 
# 從遠程復制到本地 
scp username@hostname:/remote/file.txt /local/directory

使用rsync命令同步文件和目錄:

rsync -avz /local/directory username@hostname:/remote/directory
5. 高級應用
SSH代理轉發

SSH代理轉發允許你在多臺服務器之間跳轉時,使用本地SSH代理進行認證:

ssh -A username@hostname
SSH多重跳板

通過SSH多重跳板,可以在多臺服務器之間進行跳轉,例如:

ssh -J jump_host target_host

其中,jump_host是跳板服務器,target_host是目標服務器。

使用SSH配置管理工具

可以使用Ansible等配置管理工具通過SSH進行遠程管理。例如,使用Ansible執行遠程命令:

--- 
- name: Test Playbook hosts: all tasks: - name: Echo a message command: echo "Hello, World!"

運行Ansible playbook:

ansible-playbook -i inventory test_playbook.yml
6. 安全強化
更改默認端口

通過更改默認的SSH端口,可以減少暴力攻擊的可能性:

Port 2222
使用Fail2Ban

安裝并配置Fail2Ban以防止暴力攻擊:

sudo apt install fail2ban 
# 配置Fail2Ban 
sudo vim /etc/fail2ban/jail.local 
# 添加以下內容 
[sshd] 
enabled = true 
port = 2222 
filter = sshd 
logpath = /var/log/auth.log 
maxretry = 3
使用防火墻

配置防火墻僅允許特定IP地址通過SSH連接:

sudo ufw allow from 192.168.1.0/24 to any port 2222
7. SSH教程

以下是一些推薦的SSH教程,幫助你更好地理解和應用SSH:

  • Linux SSH教程
  • SSH密鑰認證教程
  • 使用Ansible進行SSH管理

總結

SSH是一個強大且靈活的工具,可以用于遠程管理、文件傳輸和安全通信。通過本文的介紹,讀者應能夠理解SSH的基本原理,掌握SSH的安裝和配置方法,并能在實際場景中靈活應用SSH。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37152.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37152.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37152.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎么加快音頻播放速度?加快音頻播放器的四種方法介紹

怎么加快音頻播放速度?許多音樂愛好者對各種類型的歌曲充滿了熱情,這些歌曲節奏輕快或者緩慢不一,但通常默認的播放速度都是一倍速。有時候,一些旋律悠揚的曲子可能聽起來有些慢,這時候一些朋友可能想要嘗試加快節奏&a…

easyquotation獲取港股的bug

easyquotation:實時股票數據獲取 easyquotation庫,是一個非常好用的實時股票數據獲取庫,可以實時獲取新浪、騰訊的免費股票行情,集思路的分級基金行情 安裝 項目地址:https://github.com/shidenggui/easyquotation.…

鴻蒙開發 之 健康App案例

1.項目介紹 該項目是記錄用戶日常飲食情況,以及針對不同食物攝入營養不同會有對應的營養攝入情況和日常運動消耗情況,用戶可以自己添加食品以及對應的熱量。 1.1登陸頁 1.2飲食統計頁 1.3 食物列表頁 2.登陸頁 2.1自定義彈框 import preferences from oh…

IP地址查詢和代理服務器:雙重保護隱私

隨著網絡應用的日益普及,我們的個人信息和數據安全面臨前所未有的挑戰。在此背景下,IP地址查詢和代理服務器成為保護個人隱私和網絡安全的兩大關鍵工具。本文將從IP地址查詢的原理和應用出發,深入剖析代理服務器在網絡隱私保護中的作用&#…

掌握批處理的高級技巧:使用正則表達式

掌握批處理的高級技巧:使用正則表達式 在Windows批處理腳本編寫中,正則表達式是一個強大的工具,它可以幫助我們進行復雜的字符串匹配和處理。雖然批處理腳本本身并不直接支持正則表達式,但我們可以通過一些技巧和外部工具來實現正…

AI視頻教程下載-數據分析中的提示工程:Python、Pandas、ChatGPT

Prompt Engineering for Data Analysis Python, Pandas, ChatGPT ChatGPT與Python:無需編程。借助ChatGPT、Python、Pandas及提示工程進行數據分析與數據可視化 "利用Python、Pandas和ChatGPT進行數據分析的提示工程"是一門開創性的課程,它通…

SpringBoot(二)SpringBoot多環境配置

Spring框架常用注解簡單介紹 SpringMVC常用注解簡單介紹 SpringBoot(一)創建一個簡單的SpringBoot工程 SpringBoot(二)SpringBoot多環境配置 SpringBoot(三)SpringBoot整合MyBatis SpringBoot(四…

vue-advanced-chat 聊天控件的使用

測試代碼:https://github.com/robinfoxnan/vue-advanced-chat-test0 控件源碼:https://github.com/advanced-chat/vue-advanced-chat 先上個效果圖: 這個控件就是專門為聊天而設計的,但是也有一些不足: 1&#xf…

【層序遍歷】個人練習-Leetcode-102. Binary Tree Level Order Traversal

題目鏈接&#xff1a;https://leetcode.cn/problems/binary-tree-level-order-traversal/description/ 題目大意&#xff1a;給一棵樹的根&#xff0c;要求以vector<vector<int>>形式給出層序遍歷結果。 思路&#xff1a;層序遍歷并不難&#xff0c;tricky的點在…

Python學習筆記26:進階篇(十五)常見標準庫使用之性能測試cProfile模塊學習使用

前言 本文是根據python官方教程中標準庫模塊的介紹&#xff0c;自己查詢資料并整理&#xff0c;編寫代碼示例做出的學習筆記。 根據模塊知識&#xff0c;一次講解單個或者多個模塊的內容。 教程鏈接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 本文主要…

【vuejs】首次頁面加載時觸發那些聲明周期鉤子函數

1. 首次頁面加載觸發的鉤子 在Vue.js中&#xff0c;頁面或組件的首次加載會觸發一系列預定義的生命周期鉤子函數&#xff0c;這些鉤子函數按照特定的順序執行&#xff0c;允許開發者在組件的不同階段執行代碼。以下是首次頁面加載時觸發的鉤子及其作用&#xff1a; 2.1 befor…

.net core 的 winform 的 瀏覽器控件 WebView2

在.NET Core WinForms應用程序中&#xff0c;沒有直接的“瀏覽器控件”&#xff0c;因為WinForms不支持像WebBrowser控件那樣的功能。但是&#xff0c;你可以使用WebView2控件&#xff0c;它是一個基于Chromium的瀏覽器內核&#xff0c;可以在WinForms應用程序中嵌入Web內容。 …

R語言 | 使用ggplot繪制柱狀圖,在柱子中顯示數值和顯著性

原文鏈接&#xff1a;使用ggplot繪制柱狀圖&#xff0c;在柱子中顯示數值和顯著性 本期教程 獲得本期教程示例數據&#xff0c;后臺回復關鍵詞&#xff1a;20240628。&#xff08;PS&#xff1a;在社群中&#xff0c;可獲得往期和未來教程所有數據和代碼&#xff09; 往期教程…

搭建ASPP:多尺度信息提取網絡

文章目錄 介紹代碼實現 介紹 ASPP&#xff08;Atrous Spatial Pyramid Pooling&#xff09;&#xff0c;空洞空間卷積池化金字塔。簡單理解就是個至尊版池化層&#xff0c;其目的與普通的池化層一致&#xff0c;盡可能地去提取特征。ASPP 的結構如下&#xff1a; 如圖所示&…

Nuxt框架 和 Vite框架比較(四)

共同點 基于 Vue.js&#xff1a;Nuxt 和 Vite 都是圍繞 Vue.js 構建的&#xff0c;這意味著它們可以利用 Vue.js 的響應式數據綁定和組件系統。 現代前端開發&#xff1a;兩者都支持現代前端開發實踐&#xff0c;如組件化、模塊化和單文件組件&#xff08;SFCs&#xff09;。 V…

十二、Yocto集成ROS2 app程序(package)

文章目錄 Yocto集成ROS2 app程序1. 添加一個ros2 package應用程序2. 添加bb文件集成app應用程序 Yocto集成ROS2 app程序 本篇文章為基于raspberrypi 4B單板的yocto實戰系列的第十二篇文章&#xff1a; 一、yocto 編譯raspberrypi 4B并啟動 二、yocto 集成ros2(基于raspberrypi…

【MotionCap】DROID-SLAM 1 :介紹及安裝

DROID-SLAM :DROID-SLAM: Deep Visual SLAM for Monocular DROID-SLAM:適用于單目、立體和 RGB-D 相機的深度視覺 SLAM Stereo, and RGB-D Cameras https://arxiv.org/abs/2108.10869DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Camerasfile:///X:/04_mo…

GuLi商城-前端啟動命令npm run dev

由于這里配置了dev&#xff0c;所以啟動命令是npm run dev

柯橋在職學歷提升|專科本科之自考本科哪些專業不考數學

一、管理類專業 這類專業綜合性和理論性比較強&#xff0c;除了涉及到管理學相關的理論知識外&#xff0c;還有相應的專業知識&#xff0c;目前比較典型的專業有&#xff1a;行政管理、人力資源管理、工商管理&#xff08;現代企業管理&#xff09;、工商管理&#xff08;商務管…

高通410-linux棒子設置網絡驅動

1.首先打開設備管理器 2.看到其他設備下的RNDIS&#xff0c;右鍵更新驅動程序 3.點擊瀏覽我的電腦… 最后一個