《每天一個Linux命令》 -- (5)通過sshkey密鑰登錄服務器

歡迎閱讀《每天一個Linux命令》系列!在本篇文章中,將介紹通過密鑰生成,使用公鑰連接管理服務器。

概念

SSH 密鑰是用于安全地訪問遠程服務器的一種方法。SSH 密鑰由一對密鑰組成:公鑰和私鑰。公鑰存儲在遠程服務器上,私鑰存儲在本地計算機上。

通過公鑰連接管理Linux服務器優缺點:
優點:

  • 安全性: 公鑰身份驗證比密碼身份驗證更安全。公鑰是一個加密的密鑰對,私鑰保存在客戶端,而公鑰保存在服務器上。
  • 無需密碼: 公鑰身份驗證消除了密碼管理的需求。用戶無需記住復雜的密碼,而且在服務器上也不需要存儲密碼。
  • 方便性: 一旦設置了公鑰身份驗證,用戶就可以輕松地連接到服務器,而無需每次都輸入密碼。
  • 多因素認證: 公鑰身份驗證可以與其他身份驗證方法結合使用,實現多因素認證。例如,可以使用密碼和公鑰的組合進行認證,提高安全性。

缺點:

  • 密鑰管理: 公鑰身份驗證需要有效地管理密鑰對。如果私鑰丟失或泄露,可能會導致安全問題。

  • 初次設置復雜性: 初次設置公鑰身份驗證可能會相對復雜,特別是對于不熟悉密鑰管理的用戶來說。然而,一旦設置完成,后續的連接將更為簡單。

  • 無法處理丟失的私鑰: 如果用戶丟失了私鑰,他們將無法再次連接到服務器,除非管理員重新配置他們的公鑰。

  • 不適用于所有場景: 公鑰身份驗證不適用于所有場景。在某些情況下,可能需要使用其他身份驗證方法,如密碼身份驗證或證書身份驗證。

總體而言,使用公鑰連接管理Linux服務器提供了更高的安全性和便捷性,但需要合理管理密鑰對以確保系統的整體安全。

生成密鑰

在本地計算機上生成 SSH 密鑰,可以使用 ssh-keygen 命令。

ssh-keygen

提示的意思(可以直接回車,留空默認):

此命令將提示您輸入以下信息:

  • 文件名:用于存儲密鑰的文件名。默認為 id_rsa
  • 密碼:用于保護私鑰的密碼。可以留空。
  • 重復密碼:確認密碼。

生成密鑰后,將在本地計算機上創建兩個文件:

  • id_rsa:私鑰文件。
  • id_rsa.pub:公鑰文件。
[root@chatgpt-test ~]# ll /root/.ssh
總用量 12
-rw-------. 1 root root 1675 12月  8 08:00 id_rsa
-rw-r--r--. 1 root root  399 12月  8 08:00 id_rsa.pub
-rw-r--r--. 1 root root  347 11月 21 05:19 known_hosts

將公鑰復制到遠程服務器
可以使用 cat 命令+遠程命令+重定向組合

cat ~/.ssh/id_rsa.pub | ssh 用戶名@遠程服務器地址 'cat >> ~/.ssh/authorized_keys'

此命令將將公鑰追加到遠程服務器上的 authorized_keys 文件中。

演示示例:

假設本地服務器用戶名為 root,IP為192.168.31.223,遠程服務器的 IP 地址為 192.168.31.162,則生成密鑰并將公鑰復制到遠程服務器的操作如下:

#在本地計算機上生成密鑰,執行命令后,根據提示,可以設置私鑰密碼,或者直接回車3次(默認),生成密鑰。
[root@chatgpt-test ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8IlsI9RZn/sDvn10OB5mvm8d+yP/0rVb5cwNQbT1wlg root@chatgpt-test
The key's randomart image is:
+---[RSA 2048]----+
|        .    .E .|
|     . o . . = o.|
|    . +   o . = .|
|   . . + . .   o |
|    . = S o   ...|
|     o . . o  B*=|
|          . o* =%|
|           o o=+=|
|          . ..+BO|
+----[SHA256]-----+

將公鑰復制到遠程服務器

從192.168.31.223將公鑰復制到192.168.31.162

cat ~/.ssh/id_rsa.pub | ssh root@192.168.31.162 'cat >> ~/.ssh/authorized_keys'

注意事項

  • 在生成密鑰時,建議使用強密碼來保護私鑰。
  • 在復制公鑰時,請確保遠程服務器上的 authorized_keys 文件具有可寫權限。

其他方法

也可以使用 cp 命令來將公鑰復制粘貼到遠程服務器。

或者通過ssh-copy-id 用戶名@遠程服務器地址,此命令將公鑰復制到遠程服務器上的 authorized_keys 文件中。

命令操作

使用 SSH 密鑰登錄遠程服務器的命令如下:

ssh [選項] 用戶名@遠程服務器地址

命令詳細解釋

ssh 命令的參數如下:

參數說明
選項可選參數,用于指定 SSH 連接的屬性。
用戶名遠程服務器上的用戶名。
遠程服務器地址遠程服務器的 IP 地址或主機名。

命令選項

選項說明
-i指定私鑰文件的路徑。
-p指定遠程服務器的端口號。
-t啟用終端模式。
-v顯示 ssh 命令執行的詳細信息。

注意事項

  • 在使用 SSH 密鑰登錄遠程服務器之前,需要在本地計算機上生成 SSH 密鑰并將公鑰復制到遠程服務器。
  • 可以使用 ssh-keygen 命令生成 SSH 密鑰。
  • 可以使用 cat 命令將公鑰復制到遠程服務器。

sshkey 命令的使用技巧

  • 可以使用選項 -i 指定私鑰文件的路徑。如果不指定此選項,則 ssh 命令將使用默認的私鑰文件。
  • 可以使用選項 -p 指定遠程服務器的端口號。如果不指定此選項,則 ssh 命令將使用默認的端口號 22。
  • 可以使用選項 -t 啟用終端模式。如果不指定此選項,則 ssh 命令將啟用交互式模式。
  • 可以使用選項 -v 顯示 ssh 命令執行的詳細信息。

以下是一些使用 sshkey 設置完成后演示命令的示例:

示例1:使用默認的私鑰文件登錄遠程服務器

ssh root@192.168.31.162

驗證:

[root@chatgpt-test ~]# ssh root@192.168.31.162
Last login: Thu Nov 30 08:24:49 2023 from 192.168.31.223
[root@localhost ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 02:11:32:2a:0f:96 brd ff:ff:ff:ff:ff:ffinet 192.168.31.162/24 brd 192.168.31.255 scope global noprefixroute eth0

示例2:使用指定的私鑰文件登錄遠程服務器

ssh -i ~/.ssh/id_rsa root@192.168.31.162

示例3:使用指定的端口號登錄遠程服務器

ssh -p 2222 root@192.168.31.162

通過SSH軟件登錄

soreceCRT無密碼登錄centos7

將生成的私鑰,通過命令sz ~/.ssh/id_rsa.pub下載到本地,通過crt軟件讀寫私鑰文件進行登錄

即可無秘訪問192.168.31.162

  • 設置公鑰優先級再前,密碼驗證再后
    在這里插入圖片描述

  • 添加公鑰(點擊-屬性,選擇公鑰在本機的路徑)
    在這里插入圖片描述

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

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

相關文章

軟件工程復習

一、題型 單項選擇題 20分 填空題 10分 判斷題 10分 簡答題 18分 應用題 12分 綜合題 30分 軟件程序數據文檔 軟件是無形的、不可見的邏輯實體 20世紀60年代末爆發軟件危機 軟件危機是指軟件在開發與維護過程中遇到的一系列嚴重的問題 …

理解 GET、POST、PATCH 和 DELETE 請求的參數傳遞方式

理解 GET、POST、PATCH 和 DELETE 請求的參數傳遞方式 本文將向您介紹在使用 GET、POST、PATCH 和 DELETE 請求時如何傳遞參數。通過詳細解釋每種請求的參數傳遞方式和示例代碼&#xff0c;您將了解如何正確地將數據發送到服務器并與之交互。 GET 請求的參數傳遞方式 在 GET…

CentOS 7.9安裝寶塔面板,安裝gitlab服務器

docker安裝方式比較慢&#xff0c;安裝包1.3GB 安裝后啟動很慢 docker logs q18qgztxdvozdv_gitlab-ce-gitlab-1 docker ps docker exec -it q18qgztxdvozdv_gitlab-ce-gitlab-1 sh cd /etc/gitlab cat initial_root_password 軟件商店安裝方式&#xff0c;失敗了2023.12…

clickhouse刪除partition分區數據

clickhouse分布式表tencent_table_20231208_DIST&#xff0c;本地表tencent_table_20231208_local&#xff1b; 30臺clickhouse存儲服務器&#xff1b; 本地表&#xff1a;tencent_table_20231208_local CREATE TABLE tencent_sz.tencent_table_20231208_local (id Int64 DEFA…

hook其他調試技巧

輸出堆棧信息 通過 android.util.Log 輸出當前線程的堆棧跟蹤信息。 function showStacks() {Java.perform(function () {console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new() )); }) } 可以在需要的…

機器學習--稀疏學習

前置知識&#xff1a; 通常學習一次模型的過程如下&#xff1a;我們普遍為了獲取更好的模型效果&#xff0c;直接對原始數據學習&#xff0c;會造成過擬合、需要特征提取&#xff1b; 而若特征提取完后依舊有很多特征&#xff0c;還是會容易過擬合。這時候就需要特征降維和特…

[leetcode 前綴和]

525. 連續數組 M :::details 給定一個二進制數組 nums , 找到含有相同數量的 0 和 1 的最長連續子數組&#xff0c;并返回該子數組的長度。 示例 1: 輸入: nums [0,1] 輸出: 2 說明: [0, 1] 是具有相同數量 0 和 1 的最長連續子數組。示例 2: 輸入: nums [0,1,0] 輸出: …

笙默考試管理系統-MyExamTest----codemirror(48)

笙默考試管理系統-MyExamTest----codemirror&#xff08;48&#xff09; 目錄 笙默考試管理系統-MyExamTest----codemirror&#xff08;48&#xff09; 一、 笙默考試管理系統-MyExamTest----codemirror 二、 笙默考試管理系統-MyExamTest----codemirror 三、 笙默考試管…

C/C++端口復用SO_REUSEADDR(setsockopt參數),test ok

端口復用最常用的用途應該是防止服務器重啟時之前綁定的端口還未釋放或者程序突然退出而系統沒有釋放端口。這種情況下如果設定了端口復用&#xff0c;則新啟動的服務器進程可以直接綁定端口。如果沒有設定端口復用&#xff0c;綁定會失敗&#xff0c;提示ADDR已經在使用中——…

前端學習--React(5)

一、useReducer 管理相對復雜的狀態數據 定義一個reducer函數&#xff0c;根據action值的不同返回不同的狀態 在組件中調用useReducer并傳入reducer函數和狀態的初始值 事件發生時&#xff0c;通過dispatch函數分派一個對象&#xff0c;即通知reducer具體返回哪個狀態對應的操…

STM32 寄存器配置筆記——USART DMA發送

一、DMA介紹 直接存儲器存取(DMA)用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳 輸。無須 CPU 干預&#xff0c;數據可以通過 DMA 快速地移動&#xff0c;這就節省了 CPU 的資源來做其他操作。當產品對于時序要求較嚴格時&#xff0c;外設使用DMA的方式能夠減…

深入了解Java 8日期時間新玩法:DateTimeFormatter與ZoneOffset的使用

推薦語 在這篇文章中&#xff0c;我們將深入探討Java中的DateTimeFormatter和ZoneOffset類的功能和使用方法。這些類是在Java 8中引入的新的日期時間API的一部分&#xff0c;它們為我們提供了更靈活、更易用的日期和時間處理能力。盡管這些類在Java 8中已經出現&#xff0c;但…

ELK(六)—Filebeat安裝部署

目錄 一、介紹1.1特點1.2使用原因1.3結構圖1.4工作流程 二、安裝部署2.1下載2.2啟動2.3監控日志文件2.4自定義字段 三、連接Elasticsearch四、工作原理 一、介紹 Filebeat是一個輕量級的日志和文件數據收集器&#xff0c;屬于Elastic Stack&#xff08;ELK Stack&#xff09;中…

近期Chrome瀏覽器 不知哪個版本升級后原先http強制跳轉到https,導致服務端302強制跳轉到http也沒反應

關于Chrome更新http強制跳轉到https解決方法 近期Chrome瀏覽器 不知哪個版本升級后原先http強制跳轉到https&#xff0c;導致服務端302強制跳轉到http也沒反應一、F12檢查加載的Response Headers中有沒有Non-Authoritative-Reason二、找了資料后得到解決方案&#xff1a;三、找…

云原生數據庫是什么?它的作用是啥?

目前來說&#xff0c;各廠商的云原生數據庫在演進路線上分成了兩個略有不同的路徑來解決不同的問題。 一種是各大公有云廠商選擇的&#xff0c;優先保證上云兼容性的路線&#xff0c;就是基于存算分離架構對傳統數據庫進行改造的路線&#xff1a;通過把大量的日志操作放到后臺…

插入排序——直接插入排序和希爾排序(C語言實現)

文章目錄 前言直接插入排序基本思想特性總結代碼實現 希爾排序算法思想特性總結代碼實現 前言 本博客插入排序動圖和希爾排序視頻參考大佬java技術愛好者&#xff0c;如有侵權&#xff0c;請聯系刪除。 直接插入排序 基本思想 直接插入排序是一種簡單的插入排序法&#xff…

圖空圖床圖片外鏈系統源碼-支持自定義權限策略-圖片大小格式

含視頻搭建教程。 大致功能&#xff1a; 支持本地等多種第三方云儲存 AWS S3、阿里云 OSS、騰訊云 COS、七牛云、又拍云、SFTP、FTP、WebDav、Minio多種數據庫驅動支持&#xff0c;MySQL 5.7、PostgreSQL 9.6、SQLite 3.8.8、SQL Server 2017支持配置使用多種緩存驅動&#xff…

車聯網軟件定義汽車安全攻擊示例

目錄 導言 名詞解釋 TBox QNX介紹 ADB 威脅分析

Flameshot的安裝、配置及使用

概要&#xff1a;本篇主要介紹在Ubuntu22.04環境下&#xff0c;截圖軟件Flameshot的安裝、配置及使用。 一、安裝 推薦命令行安裝 sudo apt install flameshot 二、修改gdm3配置文件 這一步是為了解決截圖時沒有光標的問題&#xff0c;解決方法我是從這里學到的解決flam…

【hugging face】bitsandbytes中8 bit量化的理解

8 位量化使數十億參數規模的模型能夠適應更小的硬件&#xff0c;而不會降低性能。 8 位量化的工作原理如下&#xff1a; 1.從輸入隱藏狀態中按列提取較大值&#xff08;離群值&#xff09;。 2.對 FP16 中的離群值和 int8 中的非離群值執行矩陣乘法。 3.改變非異常值結果以將值…