SSH(Secure Shell)是一種加密的網路協議,廣泛的應用在不安全的網路上安全地運行網路服務。
SSH提供了加密的通訊和身份驗證的方法,這會讓資料傳輸變得更加安全可靠。
SSH金鑰驗證是一種更安全的身份驗證方式,相較於傳統的密碼驗證更為推薦。在安全性方面,SSH金鑰身份驗證提供了更高的保護級別,因為它基於公鑰和私鑰的加密機制,有效減少了密碼被破解的風險。
密碼驗證在許多情況下並不十分安全,因為密碼可能會被猜測、被破解,甚至在傳輸過程中受到中間人攻擊的威脅。這強調了採用更複雜和多層次的安全措施的重要性,以確保使用者的身分和資料得到更有效的保護。
而金鑰身份驗證是透過使用公鑰和私鑰的組合,這大大增加了安全性。
使用者的私鑰被保存在本地,而公鑰則儲存在遠端伺服器上。這種安排增加了安全性,即使攻擊者截獲了公鑰,也難以反向推導出私鑰。這種方法提供了更可靠的身份驗證方式。
#產生SSH金鑰對
#首先,要確保你的Linux系統上已經安裝了OpenSSH工具。
大多數Linux發行版通常會預先安裝該工具,如果你的系統沒有安裝,可以透過套件管理器輕鬆安裝。
在Debian/Ubuntu上使用apt安裝OpenSSH:
sudo apt update sudo apt install openssh-client openssh-server
在Red Hat/CentOS上使用yum安裝OpenSSH:
sudo yum install openssh-clients openssh-server
使用ssh-keygen
產生金鑰對
一旦安裝了OpenSSH,你就可以使用ssh-keygen
指令產生SSH金鑰對。
指令的基本用法如下:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-
-t rsa
指定金鑰類型為 RSA。 -
-b 4096
指定密鑰長度為 4096 比特,以提高安全性。 -
-C "your_email@example.com"
加入註釋,一般都用你的郵件地址。
產生密鑰對後,你可以選擇將其儲存在預設位置(~/.ssh/
目錄下)或選擇其他位置。
產生的金鑰對包含兩個檔案:私鑰檔案(id_rsa
)和公鑰檔案(id_rsa.pub
)。私鑰檔案儲存在本地,而公鑰檔案則需要被複製到遠端伺服器上。
私鑰是敏感訊息,必須妥善保存。公鑰則是用於身份驗證的公開資訊。
金鑰的儲存與管理
#預設情況下,產生的 SSH 金鑰對會儲存在使用者的 ~/.ssh/
目錄下。這個目錄包含了兩個主要檔案:id_rsa
(私鑰)和 id_rsa.pub
(公鑰)。這種設定是為了方便使用者在使用 SSH 時能夠輕鬆找到和管理金鑰。
然而,有時出於安全或組織的考慮,你可能會想要將金鑰儲存在其他位置。這可以透過在產生金鑰對時指定儲存路徑來實現。
例如:
ssh-keygen -t rsa -b 4096 -f /path/to/your/keys/my_key -C "your_email@example.com"
這樣會將私鑰儲存為 /path/to/your/keys/my_key
,公鑰儲存為 /path/to/your/keys/my_key.pub
。
SSH 金鑰代理程式是一個可以管理 SSH 私鑰的程序,可以在一次登入後將私鑰的解密密碼快取起來,以便後續的 SSH 操作無需再次輸入密碼。
1、啟動 SSH 代理程式:
eval "$(ssh-agent -s)"
2、新增私鑰到代理:
ssh-add ~/.ssh/id_rsa
這樣,你就不需要每次 SSH 登入都輸入私鑰密碼了,提高了使用的便利性和安全性。
在實際使用中,你可能會有多個金鑰對,用於不同的伺服器或用途。
為了更好地管理這些金鑰對,可以使用 SSH 設定檔或金鑰檔案的別名。
設定SSH伺服器
#登入目標伺服器
在你能夠使用 SSH 金鑰驗證登入目標伺服器之前,確保目標伺服器上已經啟用了 SSH 服務。在大多數 Linux 系統中,預設情況下,SSH 服務是啟動的。
ssh username@your_server_ip
確保替換 username
為你的使用者名,your_server_ip
為目標伺服器的 IP 位址。這將嘗試使用預設的密碼身份驗證登入。
手動安裝公鑰
手動安裝公鑰是一種基本的方法,它涉及將你的公鑰內容新增到目標伺服器上的 ~/.ssh/authorized_keys
檔案中。
1、將本機公鑰內容複製到剪貼簿:
cat ~/.ssh/id_rsa.pub
2、在目標伺服器上,使用文字編輯器開啟 ~/.ssh/authorized_keys
檔案:
nano ~/.ssh/authorized_keys
3、将剪贴板上的公钥内容粘贴到文件末尾,并保存文件。
4、回到本地机器,尝试使用密钥身份验证登录:
ssh username@your_server_ip
通过ssh-copy-id
简化公钥部署
ssh-copy-id
命令可以简化将本地公钥复制到远程服务器的过程。
这个命令会自动处理将公钥添加到目标服务器的 ~/.ssh/authorized_keys
文件中。
ssh-copy-id username@your_server_ip
确保替换 username
为你的用户名,your_server_ip
为目标服务器的 IP 地址。这个命令将提示你输入用户密码,然后将本地公钥复制到目标服务器上。
通过这两种方法,你可以在目标服务器上配置 SSH 密钥身份验证,提高登录的安全性和便利性。
SSH 配置文件详解
~/.ssh/config
文件的作用和结构
~/.ssh/config
文件是一个用于配置 SSH 客户端行为的配置文件。
它允许你为不同的主机设置自定义的配置选项,从而简化 SSH 连接的管理。
创建 ~/.ssh/config
文件:
touch ~/.ssh/config
编辑 ~/.ssh/config
文件:
nano ~/.ssh/config
使用别名、端口号等配置项简化SSH连接
配置文件中可以包含多个主机条目,每个条目定义了连接到远程主机的配置选项。
以下是一个简单的例子:
Host example HostName your_server_ip User username Port 2222 IdentityFile ~/.ssh/id_rsa
-
Host
:设置别名,用于代替实际的主机名。 -
HostName
:远程主机的 IP 地址或域名。 -
User
:连接时使用的用户名。 -
Port
:SSH 连接的端口号。 -
IdentityFile
:指定用于身份验证的私钥文件路径。
实际场景中的示例配置文件
以下是一个更为复杂的 ~/.ssh/config
文件,涵盖了多个主机和配置选项:
Host work HostName work.example.com User alice Port 22 IdentityFile ~/.ssh/work_key Host personal HostName personal.example.org User bob Port 2222 IdentityFile ~/.ssh/personal_key Host github HostName github.com User git IdentityFile ~/.ssh/github_key
这样,你只需要使用别名就能够轻松连接到相应的主机,而不必记住每个主机的详细信息。
限制和加固SSH访问
禁用密码身份验证
禁用密码身份验证是提高 SSH 安全性的重要步骤之一。
这样,用户只能通过密钥身份验证进行访问,而不再依赖弱密码。
在sshd_config
中禁用密码身份验证:
1、打开 sshd_config
文件:
sudo nano /etc/ssh/sshd_config
2、找到并修改以下行:
PasswordAuthentication no
3、保存文件并重新启动 SSH 服务:
sudo service ssh restart
使用sshd_config
文件设置访问限制
sshd_config
文件包含了用于配置 SSH 服务器的各种选项。
通过适当配置,你可以限制用户访问、定义允许登录的用户、设置登录时的认证方式等。
一些常用的 sshd_config
选项:
-
AllowUsers
:指定允许登录的用户列表。 -
DenyUsers
:指定禁止登录的用户列表。 -
AllowGroups
:指定允许登录的用户组列表。 -
DenyGroups
:指定禁止登录的用户组列表。 -
PermitRootLogin
:禁用或限制 root 用户的远程登录。
示例:
AllowUsers alice bob DenyUsers mallory AllowGroups sshusers DenyGroups badusers PermitRootLogin no
以上是如何在Linux系統中設定SSH金鑰身份驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

如果您想在不支持的國家,地區或地區通過VPN使用Chatgpt,您知道哪個是ChatGpt最好的VPN?在這篇文章中,PHP.CN軟件將為您提供一些不錯的選擇。您可以根據要求的人選擇一個

如何修復Windows 11/10上的“ XboxPcappft.exe不良圖像”問題?來自PHP.CN的這篇文章提出了解決煩人問題的多種方法。請繼續閱讀。

當您想在OneDrive中刪除文件或文件夾時該怎麼辦,但是發現無法刪除OneDrive文件或文件夾?現在,您可以從php.cn讀取此帖子,以獲取修復“ OneDrive文件無法在Windows 1中刪除的最佳解決方案”

啟動設備時,錯誤消息“顯示連接可能是有限的”是一個煩人的問題。在PHP.CN的這篇文章中,您可以獲取有關導致此問題以及如何快速解決問題的詳細信息。

Microsoft向Dev Channel中的內部人員釋放了新的構建,它是Windows 11 Build 25115。與Beta通道發布的構建相比,這是一個更高的構建。您可以遵循此PHP.CN帖子以了解有關它的一些相關信息。

如何釋放C驅動器上的空間,還是如何清除C驅動器上的浪費?這是PHP.CN關注的主題。如果您的C驅動器充滿了舊應用程序和不必要的程序,則可以選擇清理它。讓我們開始。

Chatgpt已使用GPT-4更新。為了幫助您更好地理解此更新,我們將介紹Chatgpt 4和Chatgpt 3之間的差異。此外,如果要在Windows上恢復已刪除的文件,則可以嘗試PHP.CN電源數據恢復。

如果使用Windows 11 N或KN版本,如何下載和安裝媒體功能包? 在這篇文章中,PHP.CN提供了有關獲取Windows 11 Media功能包的分步指南。讓我們查看一些細節。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境