知道 GPG 的運作原理之後我們要來實作 Windows 與 Kali Linux 之間的加密文件互傳囉!
今天要做的三件事情,內容比較多,大家請慢用:
在開始今天的實作之前,首先你要有 OpenSSH 這個工具,以及基本的網路七層架構 OSI 的知識,如果覺得太硬了可以先去彌補一下這些基礎知識,我覺得 iThome 這篇文章很有幫助,或是用 ChatGPT 詢問一下。
安裝之前你可以先用系統管理員身分執行「Powershell」,輸入
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
看看你的電腦裡面有沒有出現 OpenSSH.Client & OpenSSH.Server,然後看一下 State 是出現 Installed
還是 NotPresent
,如果是 NotPresent
那就要安裝囉!
win + i
打開「設定」OpenSSH
找到「OpenSSH 伺服器」# 以 Powershell 高階指令安裝
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 以底層系統工具安裝
DISM /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0
# 擇一,結果是一樣的,都是安裝 OpenSSH.Server
# 啟用 OpenSSH.Server
Start-Service sshd
# 下次開機的時候自動把 SSH port 22 打開
Set-Service -Name sshd -StartupType 'Automatic'
Kali Linux 不用安裝!它原本就預設有 OpenSSH 的功能了,而且等一下傳送 GPG 加密文件的時候用到的 scp
也有,這就是為什麼我說 Kali 很方便了哈哈哈!
不開的話 Kali Linux 進不去 Windows,你可以嘗試在 Kali Linux 下指令
ssh <your_username>@<your_windows_IPv4>
# 舉例:ssh GF66@172.31.176.1
你會發現 Kali Linux 直接卡住,那是因為你的 Windows port 22
被防火牆擋住了!檢查看看是不是真的被防火牆擋住了,一樣用系統管理員身分執行「Powershell」然後輸入
Get-NetFirewallRule -DisplayName "*OpenSSH*"
很明顯的我們 Profile 被設定成 Private
這會導致 WSL 的虛擬網卡 (vEthernet) 被擋下來。因為 Windows 開啟 OpenSSH Server 之後,系統會自動新增一條防火牆規則。
所以我們要在 Windows 新增一條防火牆規則,在「Powershell」下指令
New-NetFirewallRule -Name "OpenSSH-Server-WSL" `
-DisplayName "OpenSSH Server for WSL" `
-Enabled True -Direction Inbound -Protocol TCP `
-Action Allow -LocalPort 22 -Profile Any
然後你可以再嘗試看看從 Kali Linux 進入 Windows
ssh <your_username>@<your_windows_IPv4>
# 舉例:ssh GF66@172.31.176.1
它會問你:「我不確定這台主機是不是你說的那一台,是否要信任?」,當然是直接選 yes
囉!自己的電腦怎麼可能不信任對吧?接著輸入你的 Windows 密碼
噠啷!你從 Kali Linux 成功進入 Windows 介面囉!
現在我們已經可以從 Windows 進入 Kali Linux,也可以反向從 Kali Linux 進入 Windows,也就是說兩邊已經互通了。如果你想要確定是不是兩邊互通,那就從 Windows 用 SSH 進入 Kali Linux 試試看!
接著,我們就要來互傳檔案試試看!
還記得昨天說過 GPG 的運作原理嗎?我們要先把 Kali Linux 產生的公鑰傳給 Windows,這樣 Windows 才可以用公鑰加密文件回傳給 Kali Linux,最後 Kali Linux 用自己的私鑰打開這份加密文件。
(不要跟我說你忘記公私鑰了哦!真的不見了那也只好再重新產生一次了,回去看昨天的文章吧!)
所以把公鑰給 Windows 的指令為
scp public <your_username>@<your_windows_IPv4>:/C:/Users/<your_username>/Desktop
# 舉例: scp public GF66@172.31.176.1:/C:/Users/GF66/Desktop
這時候你的 Windows 桌面會出現一個這樣的檔案,這就是你的 Kali Linux 公鑰
這時候用「Kleopatra」把公鑰匯入,它是我們在安裝 Gpg4Win 的時候附加的 GUI 套件
這樣你就成功匯入 Kali Linux 的公鑰了!接著隨便寫個什麼檔案再用「Kleopatra」加密
scp <file> <your_username>@<your_Linux_IPv4>:/home/<Linux_username>/Desktop
# 舉例:scp test.txt.gpg raychao@172.31.191.74:/home/raychao/Desktop
ls
看一下,檢查檔案正確被傳送過來了gpg -d <file>
# 舉例:gpg -d test.txt.gpg
然後你就會看到
噠啷!你成功把加密文件傳送給 Kali Linux 而且還解密出來了呢!
至於下方為什麼會出現 Can't check signature: No public key
是因為你還沒有把 Windows 的公鑰傳給 Kali Linux。但你其實可以忽略這個錯誤,因為「解密」已經成功了,內容你也看得到了。只是少了「檔案真的是 Windows 那邊簽署的」這個保證而已。
這邊應該不用我說明了,大家應該都了解它的邏輯和運作方式,這邊提供流程給大家參考,就讓大家自己練習看看囉!而且拿到 Windows 公鑰之後也不會再出現 Can't check signature: No public key
的 Error 了!
scp
給 Kali Linuxnano
個文件gpg -ear <userId>
把文件加密scp
給 Windows如果你成功在 Windows 看到文件了,恭喜你!已經學會怎麼互通 Kali Linux 和 Windows,而且是秘密通訊哦!
ㄙ ㄩˊ 的鐵人賽文章
Microsoft OpenSSH 安裝說明
Microsoft SSH 連線說明
黑暗執行緒
鳥哥的 Linux 私房菜:網路設定
推薦先玩玩 SCP,因為成功傳一次檔案,會大大提升信心!