如何使用 PuTTY 創建 SSH 密鑰以連接到 VPS

公鑰和私鑰 SSH 密鑰的好處

如果您的無頭或遠程 VPS 可以通過互聯網訪問,您應該盡可能使用公鑰身份驗證而不是密碼。這是因為與僅使用密碼相比,SSH 密鑰提供了一種更安全的登錄方式。雖然密碼最終可以通過暴力破解攻擊破解,但 SSH 密鑰幾乎不可能僅通過暴力破解來解密。使用公鑰身份驗證,每臺計算機都有 (i) 公鑰 和 (ii) 私鑰 “密鑰”(兩個數學上相關的算法,幾乎不可能被破解)。

如今,OpenSSH 是類 Unix 系統(如 Linux 和 OS X)上的默認 SSH 實現。基于密鑰的身份驗證是 OpenSSH 可用的幾種身份驗證模式中最安全的,其他身份驗證方法僅在非常特定的情況下使用。SSH 可以使用 “RSA”(Rivest-Shamir-Adleman)或 “DSA”(“數字簽名算法”)密鑰。當 SSH 被發明時,這兩種算法都被認為是最先進的算法,但近年來 DSA 已被視為不太安全。RSA 是新密鑰的唯一推薦選擇,因此本教程將 “RSA 密鑰” 和 “SSH 密鑰” 互換使用。

當您登錄到您的 DigitalOcean VPS 時,SSH 服務器使用公鑰以一種只能由您的私鑰 “解鎖” 消息的方式來 “鎖定” 消息。這意味著即使是最有資源的攻擊者也無法窺視或干擾您的會話。作為額外的安全措施,一些用戶和大多數 SSH 程序以受密碼保護的格式存儲私鑰,以提供一段時間,在此期間您可以禁用已被入侵的公鑰,如果您的計算機被盜或被入侵。因此,對于大多數人來說,公鑰身份驗證是比密碼更好的解決方案。事實上,通過不在私鑰上使用密碼短語,您將能夠自動化配置管理的部分內容,例如增量離線備份、通過 DigitalOcean API 管理您的 DigitalOcean 資產等。

基于密鑰的 SSH 登錄

您可以在盡可能多的云服務器上保存相同的公鑰,而您的私鑰保存在您登錄到服務器的客戶端上。然后,您可以禁用正常的用戶名/密碼登錄過程,這意味著只有擁有有效的私鑰/公鑰對的人才能登錄;這樣可以使您的系統更安全,因為它將不受暴力破解攻擊的影響。

自動創建新的 Droplets

SSH 密鑰可以發揮的另一個有用作用是在創建 DigitalOcean droplets 時。正如您所知,當您啟動 droplet 時,您必須等待一封帶有密碼的電子郵件。雖然這封電子郵件非常方便,但有一種更安全(和更快)的方法可以訪問您的新云服務器,而無需電子郵件。這可以通過在 DigitalOcean 控制面板 中保存您的公鑰來實現。要實現這一點:

  • 首先完成本教程中標題為 Generating OpenSSH-compatible Keys for Use with PuTTY 的部分。
  • 然后,跳到 How to Use SSH Keys with DigitalOcean Droplets 的 Step Three 部分。

先決條件

本教程假設您熟悉 DigitalOcean 的 How to Log Into Your Droplet with PuTTY (for windows users) 指南。

PuTTY 密鑰生成器(又名 PuTTYgen)

雖然 PuTTY 是 SSH(以及 Telnet 和 Rlogin)的客戶端程序,但它不是基于 OpenSSH 的端口或其他形式。因此,PuTTY 不支持原生讀取 OpenSSH 的 SSH-2 私鑰文件。然而,PuTTY 有一個名為 PuTTYgen 的伴侶(一個 RSA 和 DSA 密鑰生成實用程序),它可以將 OpenSSH 私鑰文件轉換為 PuTTY 的格式;從而允許您使用 SSH 密鑰從 Windows 計算機連接到您的云服務器,同時提供 SSH 密鑰提供的額外安全性。

PuTTYgen 是一個(免費)開源實用程序,可以從 維護者的網站 下載。PuTTYgen 是您將用于生成用于 PuTTY 的 SSH 密鑰的工具。首先,您只需要下載可執行文件(.exe)并將其保存在您將用于連接到 VPS 的計算機上,例如桌面。您 不需要 “安裝” PuTTYgen,因為它是一個獨立的應用程序。

生成用于 PuTTY 的 OpenSSH 兼容密鑰

要使用 PuTTYgen 生成一組 RSA 密鑰:

  1. 雙擊其 .exe 文件啟動 PuTTYgen 實用程序;
  2. 對于 要生成的密鑰類型,選擇 RSA
  3. 生成的密鑰中的位數字段中,指定 20484096(增加位數會使通過暴力破解方法破解密鑰變得更加困難);
  4. 單擊 Generate 按鈕;
  5. 密鑰 部分的空白區域中移動鼠標指針(以生成一些隨機性),直到進度條填滿;
  6. 現在已生成了一對私鑰/公鑰;
  7. 密鑰注釋字段中,輸入 任何 您喜歡的注釋,以幫助您稍后識別此密鑰對(例如您的電子郵件地址;家庭;辦公室等)-- 在您最終創建多個密鑰對的情況下,密鑰注釋特別有用;
  8. 可選:在 密鑰密碼短語字段中輸入密碼短語,并在 確認密碼短語字段中重新輸入相同的密碼短語(如果您希望將密鑰用于自動化流程,則不應創建密碼短語);
  9. 單擊 保存公鑰 按鈕,并選擇任何您喜歡的文件名(一些用戶在計算機上創建一個名為 my_keys 的文件夾);
  10. 單擊 保存私鑰 按鈕,并選擇任何您喜歡的文件名(您可以將其保存在與公鑰相同的位置,但它應該是只有您可以訪問且您不會丟失的位置!如果您丟失了密鑰并且已禁用了用戶名/密碼登錄,您將無法再登錄!);
  11. 在標有 用于粘貼到 OpenSSH authorized_keys 文件的公鑰 的文本字段中右鍵單擊,并選擇 全選
  12. 再次在相同的文本字段中右鍵單擊,并選擇 復制

注意: PuTTY 和 OpenSSH 使用不同的格式來存儲公共 SSH 密鑰。如果您復制的 SSH 密鑰 以 “---- BEGIN SSH2 PUBLIC KEY …” 開頭,則它的格式是錯誤的。請務必仔細遵循說明。您的密鑰應該以 “ssh-rsa AAAA …” 開頭。

在服務器上保存公鑰

現在,您需要將復制的公鑰粘貼到服務器上的文件 ~/.ssh/authorized_keys 中。

  1. 登錄到您的目標服務器;參見 How to Log Into Your Droplet with PuTTY (for windows users)
  2. 如果您的 SSH 文件夾尚不存在,請手動創建它:
    mkdir ~/.ssh
    chmod 0700 ~/.ssh
    touch ~/.ssh/authorized_keys
    chmod 0644 ~/.ssh/authorized_keys
    
  3. 將 SSH 公鑰粘貼到您的 ~/.ssh/authorized_keys 文件(參見 Installing and Using the Vim Text Editor on an Cloud Server):
    sudo vim ~/.ssh/authorized_keys
    
  4. 按鍵盤上的 i 鍵,然后右鍵單擊鼠標以粘貼。
  5. 要保存,請按鍵盤上的以下鍵(按此順序):Esc:wqEnter

創建 PuTTY 配置文件以保存服務器設置

在 PuTTY 中,您可以創建(并保存)用于連接到各種 SSH 服務器的配置文件,這樣您就不必記住并不斷重新輸入冗余信息。

  1. 雙擊其可執行文件啟動 PuTTY;
  2. PuTTY 的初始窗口是 會話 類別(在窗口的左側導航到 PuTTY 的各種類別);
  3. 主機名字段中,輸入您的 VPS 的 IP 地址或其完全限定域名(FQDN);參見 How to Set Up a Host Name with DigitalOcean
  4. 端口字段中輸入端口號(為了增加安全性,考慮將服務器的 SSH 端口更改為非標準端口。 參見 Initial Server Setup with Ubuntu 12.04)
  5. 協議下選擇 SSH
  6. 在窗口的左側選擇 連接 下的 數據 子類別;
  7. 自動登錄用戶名字段中指定您打算在登錄到 SSH 服務器時使用的用戶名,并保存您正在保存的配置文件;
  8. 展開 連接 下的 SSH 子類別;
  9. 高亮顯示 Auth 子類別,然后單擊 PuTTY 窗口右側的 瀏覽 按鈕;
  10. 瀏覽您的文件系統并選擇先前創建的私鑰;
  11. 返回到 會話 類別,并在 保存的會話字段中輸入此配置文件的名稱,例如 user@123.456.78.9 或 user@host.yourdomain.tld;
  12. 單擊 保存 按鈕以保存 加載、保存或刪除存儲的會話 區域中的配置文件。

現在,您可以繼續登錄到 user@1.2.3.4,您將 不會 被提示輸入密碼。但是,如果您在公鑰上設置了密碼短語,那么您將被要求在那時(以及將來每次登錄時)輸入密碼短語。

禁用用戶名/密碼登錄

一旦您驗證了基于密鑰的登錄是否正常工作,您可以選擇禁用用戶名/密碼登錄以獲得更好的安全性。要做到這一點,您需要編輯您的 SSH 服務器配置文件。在 Debian/Ubuntu 系統上,此文件位于 /etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config

按鍵盤上的 i 鍵,編輯下面引用的行:

[...]
PasswordAuthentication no
[...]
UsePAM no
[...]

要保存,請按鍵盤上的以下鍵(按此順序):Esc:wqEnter。現在,重新加載 SSH 服務器的配置:

sudo reload ssh

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

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

相關文章

C++ | Leetcode C++題解之第92題反轉鏈表II

題目: 題解: class Solution { public:ListNode *reverseBetween(ListNode *head, int left, int right) {// 設置 dummyNode 是這一類問題的一般做法ListNode *dummyNode new ListNode(-1);dummyNode->next head;ListNode *pre dummyNode;for (i…

抽象類介紹

抽象類 【一】什么是抽象 # 將某幾個具體的生物,根據特征總結成一個類,逐層向上總結 # 唐老鴨 肉鴨 北京烤鴨 ---> 鴨子 # 北極熊 黑熊 --> 熊 # 貓 老虎 --> 貓科 # 鴨子 熊 貓科 --> 動物 【二】什么是繼承 # 動物 ---> 熊 --->…

【刷題篇】二分查找(二)

文章目錄 1、山脈數組的峰頂索引2、尋找峰值3、尋找旋轉排序數組中的最小值4、LCR 點名 1、山脈數組的峰頂索引 符合下列屬性的數組 arr 稱為 山脈數組 &#xff1a; arr.length > 3 存在 i&#xff08;0 < i < arr.length - 1&#xff09;使得&#xff1a; arr[0] &l…

macOS Ventura 13如何設置定時重啟(命令行)

文章目錄 macOS Ventura 13如何設置定時重啟(命令行)前言具體設置步驟及命令解釋其他 macOS Ventura 13如何設置定時重啟(命令行) 前言 由于升級 macOS 13 Ventura 之后&#xff0c;之前在節能里面通過鼠標點擊設置開機關機的方法不能用了&#xff0c;現在只能用命令設置開機…

css筆記總結2

找到所有的 h1 標簽。 選擇器&#xff08;選對人&#xff09; 設置這些標簽的樣式&#xff0c;比如顏色為紅色&#xff08;做對事&#xff09;。 ##css基礎選擇器 基礎選擇器又包括&#xff1a;標簽選擇器、類選擇器、id 選擇器和通配符選擇器 ###標簽選擇器&#xff1a; 標簽…

【PB案例學習筆記】-03用戶名密碼校驗

寫在前面 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gitee代碼倉庫https://gitee.com/xiezhr/pb-project-example.git 需要源代碼的小伙伴們可以自行…

KNN算法處理多元分類任務

概述 這個案例還是基于之前的案例進行改造。 之前的案例代碼完整如下&#xff1a; from sklearn.datasets import make_blobs # KNN 分類器 from sklearn.neighbors import KNeighborsClassifier # 畫圖工具 import matplotlib.pyplot as plt # 數據集拆分工具 from sklearn…

ur5 moveit配置過程

ros-noeticur5機械臂抓取仿真_ros機械臂視覺抓取仿真-CSDN博客

Java獲取請求參數

1.簡單參數接收 前端請求參數與Controller接受變量名一致 如果參數名不一致&#xff0c;接受不成功。 可以用RequestParam指定參數名&#xff0c;可以用username接收&#xff08;不推薦&#xff09;。 required true&#xff0c;表示參數必須傳遞&#xff0c;如果不傳遞會報錯…

std文件中寫入內容基礎

在C中&#xff0c;使用標準庫中的std::fstream類可以進行文件操作&#xff0c;包括文件的讀取和寫入。下面是一些常見的文件寫入模式及其介紹&#xff1a; 文件寫入模式 std::ofstream (Output File Stream) 專門用于文件寫入的流。默認模式下&#xff0c;如果文件不存在&…

連通民心,服務無界:政務熱線系統打造便捷政務新時代

一.引言 在21世紀的數字浪潮中&#xff0c;政府服務模式正經歷著前所未有的變革。隨著信息技術的飛速發展&#xff0c;民眾對于政務服務的期待已不再局限于傳統的面對面交流&#xff0c;而是更加傾向于高效、便捷、全天候的服務體驗。在此背景下&#xff0c;政務熱線系統應運而…

深入剖析Tomcat(八) 載入器與打破雙親委派機制的自定義類加載器

寫這篇文章讓我頭大了好幾天&#xff0c;書中描述的內容倒是不多&#xff0c;可能也是那會Tomcat的現狀。如今Tomcat發展了好多代&#xff0c;加上springboot的廣泛應用&#xff0c;導致現在的類加載的步驟和Tomcat資料中描述的大相徑庭。可能也是由于微服務的發展&#xff0c;…

環形數組介紹要點和難點具體應用實例和代碼解析

環形數組(或稱為循環數組、圓形數組)是一種邏輯結構,其中數組的末尾和開頭在邏輯上是相連的,從而形成一個環或圈。在實際的物理存儲中,環形數組通常是一個普通的線性數組,但在訪問和操作時采用特定的邏輯來處理邊界條件,使得元素可以從數組的末尾“循環”到開頭,或者從…

基于 Spring Boot 博客系統開發(十)

基于 Spring Boot 博客系統開發&#xff08;十&#xff09; 本系統是簡易的個人博客系統開發&#xff0c;為了更加熟練地掌握 SprIng Boot 框架及相關技術的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系統開發&#xff08;九&#xff09;&#x1f…

MySQL 開源到商業(四):MySQL 成了燙手山芋

前文提到&#xff0c;Monty 得知 Oracle 收購 Sun 的提案得到了美國政府的支持后&#xff0c;發動社區用戶向歐盟委員會請愿&#xff0c;希望通過反壟斷的名義讓 Oracle 知難而退&#xff0c;進而實現剝離 MySQL 的目的。而 Oracle 為了得到歐盟委員會的許可&#xff0c;迅速提…

Golang | Leetcode Golang題解之第91題解碼方法

題目&#xff1a; 題解&#xff1a; func numDecodings(s string) int {n : len(s)// a f[i-2], b f[i-1], c f[i]a, b, c : 0, 1, 0for i : 1; i < n; i {c 0if s[i-1] ! 0 {c b}if i > 1 && s[i-2] ! 0 && ((s[i-2]-0)*10(s[i-1]-0) < 26) {c…

Navicat 干貨 | 探索 PostgreSQL 中不同類型的約束

PostgreSQL 的一個重要特性之一是能夠對數據實施各種約束&#xff0c;以確保數據完整性和可靠性。今天的文章中&#xff0c;我們將概述 PostgreSQL 的各種約束類型并結合免費的 "dvdrental" 示例數據庫 中的例子探索他們的使用方法。 1. 檢查約束&#xff1a; 檢查…

顏色的表示和還原(一)

這篇文章主要提煉于ICCV 2019 Tutorial: Understanding Color and the In-Camera Image Processing Pipeline for Computer Vision。里面深入淺出地講解了很多ISP中的基礎知識&#xff0c;這里主要對顏色相關的部分做一點總結。 假設不成立了 相機經常被簡單地看作是衡量光線…

STM32學習計劃

前言&#xff1a; 這里先記錄下STM32的學習計劃。 2024/05/08 今天我正在學習的是正點原子的I.MX6ULL APLHA/Mini 開發板的 Linux 之ARM裸機第二期開發的視頻教程&#xff0c;會用正點原子的I.MX6ULL開發板學習第二期ARM裸機開發的教程&#xff0c;然后是學習完正點原子的I.M…

Mybatis基礎操作-刪除

Mybatis基礎操作-刪除 刪除 package com.itheima.mapper;import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper;Mapper //在運行時&#xff0c;會自動生成該接口的實現類對象&#xff08;代理對象&#xff09;&#xff0c;并且將該對象…