SSH互信的詳細解釋與配置

一、SSH互信配置

在一個分散式的系統中,需要在不同的機器之間進行通信和文件的傳輸,SSH互信是一個很好的工具。它可以讓某一個機器上的用戶能夠在無需輸入密碼的情況下,登錄另一個遠程機器。

首先,在每個機器上都需要安裝SSH(server/client),這裡以Ubuntu系統為例(以下命令需在終端中執行)

sudo apt-get update
sudo apt-get install openssh-server

安裝完成後,需要修改/etc/ssh/sshd_config文件:

sudo vim /etc/ssh/sshd_config

將PasswordAuthentication改為no

PasswordAuthentication no

重啟SSH服務:

sudo service ssh restart

配置完成後,在A機器上生成公鑰

ssh-keygen -t rsa

之後一直按Enter,如果遇到要輸入密碼的地方,可以直接按Enter,表示不用密碼。

生成完成後,可以使用ssh-copy-id命令將公鑰複製到B機器的authorized_keys文件中,以此建立兩台機器之間的SSH信任關係。

ssh-copy-id -i ~/.ssh/id_rsa.pub user@B_server_IP

其中user為B機器上的用戶名,B_server_IP是B機器的IP地址。

二、SSH互信公鑰

SSH連接時,密鑰將會被用來識別客戶端和伺服器,以確定用戶是否有許可權訪問遠程主機。公鑰配對是SSH連接的關鍵,它允許安全地連接到遠程主機而不需要提供密碼。

在上面的配置中,使用ssh-keygen命令生成公鑰,其中-rsa選項是用來指定使用RSA密鑰演算法,-t指定密鑰類型,其默認為rsa。

而SSH互信中默認使用的公鑰文件名是id_rsa.pub,如果需要自己指定文件名可以用-o選項

ssh-keygen -t rsa -f ~/.ssh/my_key_rsa

然後把公鑰文件my_key_rsa.pub放到對應的機器的~/.ssh/authorized_keys文件中。

三、SSH互信失敗

在進行SSH互信的過程中,可能會遇到不成功的情況,下面列出幾個常見的失敗情況的處理方法。

1、未知主機

當使用SSH連接遠程機器時,如果出現如下提示「Warning: Permanently added…”,表明第一次SSH連接將會添加目標主機的公鑰到本地客戶端,這個過程被稱為known_hosts文件的更新。

但是如果在該主機重裝系統、更改IP或指定了新主機名,那麼就會在連接時出現下面的錯誤:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

解決方法是使用ssh-keygen命令更新known_hosts文件,如下所示:

ssh-keygen -R server_IP

示例為刪除server_IP主機在known_hosts文件中的key。

2、許可權不足

在A機器上生成公鑰後,需要用 ssh-copy-id 命令將公鑰(id_rsa.pub或者指定的文件)複製到B機器上的 ~/.ssh/authorized_keys 文件。如果在操作中出現許可權錯誤,則可以使用以下命令授予當前登錄用戶的 /.ssh目錄和 authorized_keys 文件所在目錄的相應許可權:

chmod -R 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

四、SSH互信連接機器

SSH互信建立完成後,可以直接連接遠程機器,命令格式如下:

ssh remote_username@remote_ip_address

其中,remote_username為遠程機器上的用戶名,remote_ip_address為遠程機器的IP地址。

五、SSH互信如何測試

可以使用ssh -v選項查看debug信息,以確認SSH互信配置是否正確。

ssh remote_username@remote_ip_address -v

其中-v參數用來顯示詳細的debug信息,如果SSH互信配置正確,會看到類似下面的輸出信息:

debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg rsa-sha2-256 blen 149
debug1: Authentication succeeded (publickey).

六、SSH互信配置後可以執行shell

SSH互信配置完成後,可以直接在本地機器上執行遠程機器shell命令:

ssh remote_username@remote_ip_address command

其中command是要執行的命令,例如:

ssh user@192.168.1.100 ls

用來在遠程機器上查看當前目錄下的文件列表。

七、SSH信任配置選取

這裡的配置是指選擇要信任哪些機器,可以通過/etc/ssh/ssh_config文件進行添加。

以某一個機器為例,配置文件如下:

Host specific_machine_alias
HostName remote_ip_address
User remote_username
IdentityFile ~/.ssh/id_rsa

上述配置信息意味著,在連接specific_machine_alias時,連接這台機器的用戶名是remote_username,使用的密鑰是~/.ssh/id_rsa,並且遠程主機的IP地址是remote_ip_address。

八、總結

以上,我們對SSH互信做了詳細的闡述,包括SSH互信配置、SSH互信公鑰、SSH互信失敗、SSH互信連接機器、SSH互信如何測試、SSH互信配置後可以執行shell、SSH信任配置選取等方面。希望這篇文章能夠幫助大家更好地使用SSH互信,提高工作效率。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/283228.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:07
下一篇 2024-12-22 08:07

相關推薦

  • Python SSH 遠程執行命令

    Python SSH 遠程執行命令是指在一個伺服器上執行遠程另一個伺服器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python…

    編程 2025-04-29
  • CentOS 開啟 SSH

    一、安裝 SSH SSH 是 Secure Shell 的縮寫,是一種安全協議。在 CentOS 系統中,可以通過以下命令安裝 SSH: sudo yum install open…

    編程 2025-04-25
  • index.html怎麼打開 – 詳細解析

    一、index.html怎麼打開看 1、如果你已經擁有了index.html文件,那麼你可以直接使用任何一個現代瀏覽器打開index.html文件,比如Google Chrome、…

    編程 2025-04-25
  • Resetful API的詳細闡述

    一、Resetful API簡介 Resetful(REpresentational State Transfer)是一種基於HTTP協議的Web API設計風格,它是一種輕量級的…

    編程 2025-04-25
  • 關鍵路徑的詳細闡述

    關鍵路徑是項目管理中非常重要的一個概念,它通常指的是項目中最長的一條路徑,它決定了整個項目的完成時間。在這篇文章中,我們將從多個方面對關鍵路徑做詳細的闡述。 一、概念 關鍵路徑是指…

    編程 2025-04-25
  • AXI DMA的詳細闡述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基於AMBA…

    編程 2025-04-25
  • neo4j菜鳥教程詳細闡述

    一、neo4j介紹 neo4j是一種圖形資料庫,以實現高效的圖操作為設計目標。neo4j使用圖形模型來存儲數據,數據的表述方式類似於實際世界中的網路。neo4j具有高效的讀和寫操作…

    編程 2025-04-25
  • c++ explicit的詳細闡述

    一、explicit的作用 在C++中,explicit關鍵字可以在構造函數聲明前加上,防止編譯器進行自動類型轉換,強制要求調用者必須強制類型轉換才能調用該函數,避免了將一個參數類…

    編程 2025-04-25
  • HTMLButton屬性及其詳細闡述

    一、button屬性介紹 button屬性是HTML5新增的屬性,表示指定文本框擁有可供點擊的按鈕。該屬性包括以下幾個取值: 按鈕文本 提交 重置 其中,type屬性表示按鈕類型,…

    編程 2025-04-25
  • crontab測試的詳細闡述

    一、crontab的概念 1、crontab是什麼:crontab是linux操作系統中實現定時任務的程序,它能夠定時執行與系統預設時間相符的指定任務。 2、crontab的使用場…

    編程 2025-04-25

發表回復

登錄後才能評論