Linux ssh-keygen系列命令與ssh命令的使用

關聯文章

  1. Linux ssh 免密登錄配置👍
  2. 對日開發 TeraTerm 批量向各臺服務器傳輸文件
  3. SSH 教程👍👍👍👍👍👍

目錄

  • 一. ssh-keygen相關命令
    • 1.1 簡介
    • 1.2 生成密鑰
    • 1.3 ssh-copy-id 上傳公鑰到指定的服務器
    • 1.4 服務器的公鑰指紋查看
      • 1.4.1 ssh-keyscan 在客戶端查看對方服務器的公鑰指紋
      • 1.4.2 在服務器端查看公鑰指紋
    • 1.5 `-F` 查看指定服務器對應的完整公鑰
    • 1.6 `-R` 刪除指定服務器對應的公鑰
  • 二. ssh命令
    • 2.1 `-v` 查看連接的詳細信息
    • 2.2 `-p` 指定端口號
    • 2.3 連接遠程服務器的時候執行命令
      • 2.3.1 連接單臺服務器時,執行命令
      • 2.3.2 批量連接多臺服務器時執行命令


一. ssh-keygen相關命令

1.1 簡介

?ssh-keygen 是一個用于 創建 SSH 密鑰對(公鑰和私鑰) 的命令行工具,主要用于 SSH 認證。這些密鑰可以用來:

  • 無密碼地登錄遠程服務器(通過公鑰認證)
  • 對數據進行加密與簽名(如 Git 簽名等)
  • 管理 known_hosts 文件中主機的指紋

? SSH 密鑰對的原理簡述

  • 在本地生成密鑰對(私鑰保存在本地,公鑰可以公開)。
  • 把公鑰上傳到服務器的 ~/.ssh/authorized_keys。
  • 登錄服務器時,SSH 客戶端用私鑰進行身份認證,服務器用你上傳的公鑰進行驗證。

這樣就能實現:免密碼、安全登錄遠程主機。

1.2 生成密鑰

  • -t ed25519:指定加密算法
  • -C "fengyehong123@example.com"
    • 公鑰中會默認使用當前系統的用戶名和主機名作為注釋
    • 指定給密鑰添加注釋(通常是郵箱或用戶名,方便識別密鑰用途)
  • -f ~/.ssh/key:指定密鑰輸出的位置,會生成以下2個文件
    • ?? 私鑰:~/.ssh/key
    • ?? 公鑰:~/.ssh/key.pub
ssh-keygen -t ed25519 -C "fengyehong123@example.com" -f ~/.ssh/key

1.3 ssh-copy-id 上傳公鑰到指定的服務器

  • 命令執行之后,會把公鑰的內容給追加到對方服務器的~/.ssh/authorized_keys文件中
ssh-copy-id -i ~/.ssh/key.pub apluser@172.22.118.28

1.4 服務器的公鑰指紋查看

1.4.1 ssh-keyscan 在客戶端查看對方服務器的公鑰指紋

  • 💥注意:這種方式不能 100% 保證安全(容易被中間人攻擊),除非所在的網絡環境受到信任
$ ssh-keyscan 172.22.118.28 2>/dev/null | ssh-keygen -lf -
256 SHA256:R6Ra3HpmUF8+MgTj2Rd7guogV2STz1mjLhfIGA7fJB8 172.22.118.28 (ED25519)
3072 SHA256:6zpOXvNpQQZUMevJe+/bSGcySCnqBGZE8p2hoMjPNh0 172.22.118.28 (RSA)
256 SHA256:ZMFgHvPdsZSIuGyEkv1WFgJT3eGjSC4AI/HwTMH4s8o 172.22.118.28 (ECDSA)
  • 指定查看某種加密方式所對應的密鑰
$ ssh-keyscan -t ed25519 172.22.118.28 2>/dev/null | ssh-keygen -lf -
256 SHA256:R6Ra3HpmUF8+MgTj2Rd7guogV2STz1mjLhfIGA7fJB8 172.22.118.28 (ED25519)

1.4.2 在服務器端查看公鑰指紋

  • 服務器的公鑰都保存在/etc/ssh/目錄下
apluser@FengYeHong-HP:~$ ls -l /etc/ssh/*.pub
-rw-r--r-- 1 root root 180 May 25 21:45 /etc/ssh/ssh_host_ecdsa_key.pub
-rw-r--r-- 1 root root 100 May 25 21:45 /etc/ssh/ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 572 May 25 21:45 /etc/ssh/ssh_host_rsa_key.pub
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:ZMFgHvPdsZSIuGyEkv1WFgJT3eGjSC4AI/HwTMH4s8o root@FengYeHong-HP (ECDSA)
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:R6Ra3HpmUF8+MgTj2Rd7guogV2STz1mjLhfIGA7fJB8 root@FengYeHong-HP (ED25519)
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
3072 SHA256:6zpOXvNpQQZUMevJe+/bSGcySCnqBGZE8p2hoMjPNh0 root@FengYeHong-HP (RSA)

1.5 -F 查看指定服務器對應的完整公鑰

命令顯示內容含義
ssh-keygen -F <IP>顯示的是完整公鑰(Base64)known_hosts 中保存的原始公鑰
ssh-keygen -lf ~/.ssh/known_hosts顯示的是指紋(SHA256 hash)便于人工比對、防止被偽造
  • 當連接服務器成功之后,服務器的公鑰會被保存到
    • Linux環境:~/.ssh/known_hosts
    • Windows環境:$HOME/.ssh/known_hosts
  • 可以通過 -F 配置項查詢指定服務器對應的公鑰
$ ssh-keygen -F 172.22.118.28 | grep -v '#'
172.22.118.28 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICw5prT13UbYsJw4qzWDpq34WjbVpuT5xqNvb5hXMH8w
172.22.118.28 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCl/8jZjH5edrPIgtmGBg8NjfBk2b1aRqW66LZeD0vdiMEB8TYagccKYAg4h9RFyq2s/zjUh5EIK7gaYNapbLv/3ZtbwJf0UWieskK2x+dVbBySfKQjSobjCGrkf1ieLgv5ZIYmPxyT2lcTPOJLT3qQTVGr4Boygx2Ai3pOOqjs8jzVQaAPVnEGaHpqU4XyQxY2mvehe3lvvXd799vF3c5E+hKGJA2mGViYFSeZKhRXeoy/oTvEBYsAlYsT8efgyDE5F5ZqKXekxTy9bZbwutD4PDC6pt89h52oVoZJsuC28RsNmds/f0s8wJrsvantStZa9J1MiOTIgA4DsvvbwuSwMJLqis5pAFMV2IZ+efdrQPWeA2WKcBacCIjjfB4p5O3/HoXJFJfbWNJTnTbsCnyzlOZ42GZTB6JB192/LlPxsBDmeUrSZlPUjhGTxA8BEkzgL6a4HCzw0jKNGkR1L/UT4D/qcNWWZHhBvZaCWinYLUjXQpMNRKA51WM+GXChw+8=
172.22.118.28 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJu6r6tihFTYzSsXHk+fFp3Xnq7jNRJCrJbhdC8gpSJpoujxfv1JMVoYUiZNSI2ucR8oJFIgTul50ez31kXwX9c=
  • 💥注意:-F 查看的是服務器的完整公鑰(Base64編碼后),并不是公鑰的指紋
  • 可以通過下面的命令將Base64編碼后完整公鑰轉換為公鑰指紋,方便比對
# 服務器端查看公鑰指紋
apluser@FengYeHong-HP:~$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:R6Ra3HpmUF8+MgTj2Rd7guogV2STz1mjLhfIGA7fJB8 root@FengYeHong-HP (ED25519)# 在客戶端將Base64編碼后完整公鑰轉換為公鑰指紋
$ echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICw5prT13UbYsJw4qzWDpq34WjbVpuT5xqNvb5hXMH8w" | ssh-keygen -lf -
256 SHA256:R6Ra3HpmUF8+MgTj2Rd7guogV2STz1mjLhfIGA7fJB8 no comment (ED25519)
  • 可以通過下面的命令批量查看服務器保存到客戶端的全部公鑰的指紋
$ ssh-keygen -F 172.22.118.28 | grep -v '#' | awk '{print $2 " " $3}' | ssh-keygen -lf -
256 SHA256:R6Ra3HpmUF8+MgTj2Rd7guogV2STz1mjLhfIGA7fJB8 no comment (ED25519)
3072 SHA256:6zpOXvNpQQZUMevJe+/bSGcySCnqBGZE8p2hoMjPNh0 no comment (RSA)
256 SHA256:ZMFgHvPdsZSIuGyEkv1WFgJT3eGjSC4AI/HwTMH4s8o no comment (ECDSA)
  • 💥需要:如果服務器使用的不是默認端口的話,需要指定端口才能查看
$ ssh-keygen -F [192.168.3.23]:2222
# Host [192.168.3.23]:2222 found: line 5
[192.168.3.23]:2222 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmXkFXdtiy/3q/+C0n4oZWjk9Ooaue+qH5Ps4BIHdlVgyu3jaTJ8NMmaYebgjkzYca+GvHM4ymZB5pt/iR9DDcjpwA66nVjra8SWLZqxsnlbcs8RMR2fp8dVPvnG2uKnn3S0CHV/7/XbFdvX0nzWxHdA/YqVlUR4TPKzhAmM62DBEvRdWpuok0r2xTsE8Q/xv+SKE08t3BzUde4iDV8rEoJQ130W96sZBnEadQtr//jPIDuJ4Vjfu/xzDgqLF463AGB51E6lu9Ix9TmC+nfHCENPRrBHh6VgxHVnNi5rv9NO4kRT1CNMIeVOVccP7NY+v6j2INiEX6vo08HHK0CoQp

1.6 -R 刪除指定服務器對應的公鑰

?當遠程服務器被重新安裝、密鑰被更新或 IP 被他人占用時,就會出現類似于下面的警告

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:OYtwkILXy0dkzCTnO+2YclxZVOzQw9SzBHuaF3ve6Is.
Please contact your system administrator.
Add correct host key in /c/Users/Admin/.ssh/known_hosts to get rid of this message.
Offending RSA key in /c/Users/Admin/.ssh/known_hosts:2
Host key for [192.168.3.23]:2222 has changed and you have requested strict checking.
Host key verification failed.
Connection closed# 👇👇👇翻譯成中文就是👇👇👇
該主機的公鑰指紋跟 ~/.ssh/known_hosts 文件儲存的不一樣,必須處理以后才能連接。
這時,你需要確認是什么原因,使得公鑰指紋發生變更,到底是惡意劫持,還是管理員變更了 SSH 服務器公鑰。
# 👆👆👆翻譯成中文就是👆👆👆

?如果服務器是值得被信任的,可以通過-R配置項刪除保存在known_hosts 文件中的服務器公鑰
當通過ssh命令再次連接服務器時,新的服務器公鑰指紋就會被重新添加到known_hosts 文件中。

# 刪除指定服務器對應的公鑰
$ ssh-keygen -R 172.22.118.28
# Host 172.22.118.28 found: line 6
# Host 172.22.118.28 found: line 7
# Host 172.22.118.28 found: line 8
~/.ssh/known_hosts updated.
Original contents retained as ~/.ssh/known_hosts.old# 再次連接時會出現提示
$ ssh apluser@172.22.118.28
The authenticity of host '172.22.118.28 (172.22.118.28)' can't be established.
ED25519 key fingerprint is SHA256:R6Ra3HpmUF8+MgTj2Rd7guogV2STz1mjLhfIGA7fJB8.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

二. ssh命令

2.1 -v 查看連接的詳細信息

在這里插入圖片描述

2.2 -p 指定端口號

ssh -p 22 apluser@172.22.118.28

2.3 連接遠程服務器的時候執行命令

2.3.1 連接單臺服務器時,執行命令

# 要指定的命令可以不帶單引號
ssh apluser@172.22.118.28 ls -l ~/work/
# 但最好還是帶著單引號
ssh apluser@172.22.118.28 'ls -l ~/work/'

2.3.2 批量連接多臺服務器時執行命令

?執行后,只需要輸入服務器的密碼即可

for i in {1..2}; do ssh c1kap1${i}a 'ls -l /data/work'; done

?如果使用的TeamTerm連接linux服務器的話,還可以寫一個ttl腳本來批量執行

  • 詳情請參考這篇博客 → 對日開發 TeraTerm 批量向各臺服務器傳輸文件
; -----------------------------------------
exec_cmd = "'ls -l /data/work/'"
SSH_PWD = 'pwd001'
; -----------------------------------------for i 1 2; 拼接ssh命令sprintf2 ssh_cmd 'ssh c1kap1%da %s' i exec_cmd; 執行ssh命令sendln ssh_cmdwait 'password:'sendln SSH_PWDwait '$'
next

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

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

相關文章

從C++0基礎到C++入門 (第二十五節:指針【所占內存空間】)

目錄 一. 指針所占內存空間 1.1 驗證指針大小的代碼示例 1.2 不同系統架構下的差異 1.3 指針大小與類型無關 1.4 空指針的大小 1.5 多級指針的大小 1.6 實際應用中的注意事項 一. 指針所占內存空間 指針在內存中占用的空間大小取決于系統架構和編譯環境。 32位系統中指…

Windows選擇文件自動刪除及輸入框自動打字的解決辦法

覺得有幫助麻煩您動動發財的小手點贊、收藏、加關注&#xff0c;感謝&#xff01; 運行環境&#xff1a;windows10 現象&#xff1a;鼠標點擊任何文件&#xff0c;上下鍵選擇任何文件都會自動放入回收站并彈警告框&#xff0c;鼠標放入輸入框會自動打一串字符&#xff0c;刪除…

大模型 MCP服務案例詳細講解

大模型與 MCP(Model Context Protocol)服務器的交互是一個雙向、異步、流式的過程,涉及協議解析、函數調用、實時數據交換等關鍵環節。下面我將詳細解釋整個交互流程,結合具體示例和時序圖說明。 ?? 核心交互流程圖 #mermaid-svg-Adxo4FoP4oRzAJdV {font-family:"tr…

MVCC和日志

MVCC是一種并發控制的方法&#xff0c;在數據庫管理系統中&#xff0c;實現對數據庫的并發訪問&#xff0c;在編程語言中實現事務內存主要是為了提高數據庫并發性能&#xff0c;更好的處理讀寫沖突&#xff0c;做到即使有讀寫沖突時&#xff0c;也能做到不加鎖&#xff0c;非阻…

Redis源碼安裝 Failed to configure LOCALE for invalid locale name 報錯解決

源碼安裝之后 報錯 Failed to configure LOCALE for invalid locale name原因是redis 8.0 需要配置字符集 只需要在環境變量中添加 LANGen_US.utf8 即可&#xff0c; 在配置之前先查看當前系統中存在哪些字符集 locale -a然后在 /etc/profile 環境變量中添加配置 LANGen_US.ut…

跑酷小游戲2.0

emm&#xff0c;下面是1.0版本的&#xff0c;我問了下AI&#xff0c;出了第四關&#xff0c;按步驟更新吧。其實是我也搞不懂AI在說啥//跑酷游戲C版 #include<bits/stdc.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<tim…

相比于傳統的全波分析,特征模分析具有哪些優點

相比傳統的全波分析&#xff08;Full-Wave Analysis&#xff0c;直接求解電場/電流分布&#xff09;&#xff0c;特征模分析&#xff08;Characteristic Mode Analysis&#xff0c;CMA&#xff09;的優點主要體現在物理可解釋性、設計指導性和計算效率三個方面。1. 物理機理更清…

UE材質World Position 和 Object Position

Object Position 是 物體原點在世界坐標系下的位置 World Position 是 物體上的這個點 在世界坐標系下的位置 Actor Position 是 物體軸點位置 WorldPosition - ObjectPosition 是一個從物體原點&#xff08;pivot&#xff09;指向物體上該點的向量&#xff08;方向&#x…

github上傳文件

git remote add origin https://github.com/Ineedstrong/socket-practice.git如果不行的情況下git remote set-url origin gitgithub.com:Ineedstrong/socket-practice.git就以這種方式3. 使用 SSH 替代 HTTPS&#xff08;推薦&#xff09;繞過 HTTPS 的 TLS 問題&#xff1a;生…

【STM32U385RG 測評】基于VSCode的STM32開發環境搭建

【STM32U385RG 測評】搭建基于VSCode的STM32開發環境 文章目錄【STM32U385RG 測評】搭建基于VSCode的STM32開發環境一、安裝軟件1.1 安裝VSCode1.2 安裝STM32CubeMX1.3 安裝STM32CubeCLT1.4 安裝ST-MCU-FINDER-PC二、安裝插件2.1 安裝 STM32Cube for VSCode插件三、創建項目3.1…

設計模式(二)——策略模式

一、基本概念 既然你已經接觸到了設計模式&#xff0c;那你大概率你寫過類似這樣的代碼&#xff1a;根據不同的選擇條件&#xff08;如排序、搜索或路由&#xff09;執行不同的代碼邏輯。通常的解決方案是使用if-else或switch語句&#xff0c;但這些條件判斷有一個最大的問題是…

MySQL基礎知識總結

一、MySQL簡述 數據庫 是一個有組織的集合&#xff0c;用于存儲和管理數據的系統。它是一個軟件系統&#xff0c;被設計用來存儲、檢索和管理數據&#xff0c;并提供數據的快速訪問和處理。數據庫可以被看作是一種特殊的文件系統&#xff0c;但與傳統的文件系統不同的是&#…

數據倉庫命名規范

1. 概述 數據模型是數據管理的分析工具和交流的有力手段&#xff1b;同時&#xff0c;還能夠很好地保證數據的一致性&#xff0c;是實現商務智能&#xff08;Business Intelligence&#xff09;的重要基礎。因此建立、管理一個企業級的數據模型&#xff0c;應該遵循標準的命名…

FlinkSQL Joins全解析

1. Lookup Join用途&#xff1a;用于流表與外部維表&#xff08;靜態或緩慢變化表&#xff09;的關聯&#xff08;如 MySQL、HBase 等&#xff09;。特點&#xff1a;通過 實時查詢外部存儲 獲取維度數據。僅支持 處理時間&#xff08;Processing Time&#xff09;語義&#xf…

【FileZilla】基于 FTP 的 Windows 和 Linux 文件傳輸

在嵌入式開發過程中我們經常需要在 Windows 和 Linux 下進行文件傳輸&#xff0c;本文就介紹一種通過 FTP 實現 Windows 和 Linux 文件傳輸的方法。 Windows 為物理主機&#xff0c;Linux 是在 Vmware 虛擬機中安裝運行的 Ubuntu&#xff0c;版本為 18.04。 Ubuntu 安裝 FTP …

【GPT入門】第42課 ollama安裝與運行llama3模型

【GPT入門】第42課 ollama安裝與運行llama3模型1. 安裝ollama2.運行模型3.測試模型3.1 直接在命令行交互3.2 openai接口1. 安裝ollama https://ollama.com/ 選download, 選linux 執行安裝命令&#xff1a; curl -fsSL https://ollama.com/install.sh | sh2.運行模型 啟動服…

Lua語言元表、協同程序

元表元表的定義允許我們改變table的行為。setmetatable(普通表&#xff0c;元表)-- 元表a {"a","b","c"} -- 普通表 b {} --元表c setmetatable(a,b)print("------------------------")f {}print("f:",f)d setmetatabl…

[已解決]VSCode右鍵菜單消失恢復

前言 莫名其妙,好似VSCode自動更新以后,右鍵菜單就失效了,重裝也無果. 手動搞一個吧 保存下面代碼到桌面修復VSCODE右鍵菜單.reg,雙擊運行即可. Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]"使用 VSCode 打開""…

什么是瀏覽器標識?

瀏覽器標識 層面一&#xff1a;網絡層指紋 (HTTP/TLS) 這是最基礎的指紋&#xff0c;即使不用瀏覽器&#xff0c;只用Go的 net/http 發請求也會留下。HTTP Headers (請求頭): User-Agent: 最著名的標識&#xff0c;聲明自己是什么瀏覽器。很容易偽造&#xff0c;但也很容易被識…

五十八、【Linux系統nginx服務】nginx代理服務器、nginx優化

Nginx代理技術全景圖 #mermaid-svg-0dRktnHYPXypO9xB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0dRktnHYPXypO9xB .error-icon{fill:#552222;}#mermaid-svg-0dRktnHYPXypO9xB .error-text{fill:#552222;stroke…