Powershell腳本實現定期從服務器ssh復制文件證書到本地Windows,免密登錄
0. 問題
Linux Ubuntu服務器已經申請了泛域名證書,想將其同步到Windows機器使用。
1. 探索
使用SSH密碼登錄不太安全。原因可以自行查詢。
使用putty plink的話,plink新版本不支持輸入密碼, 使用echo password | 傳入密碼的話,一樣存在不夠安全的問題。
選用密鑰對方案,需要生成密鑰對,將其復制到服務器指定目錄,但安全性高。
2. 解決辦法
2.1 生成無密碼密鑰對
PS C:\Users\yourname> ssh-keygen -t rsa -b 4096 -f C:\Users\yourname\.ssh\scp_key -N ""
Generating public/private rsa key pair.
Your identification has been saved in C:\Users\yourname\.ssh\scp_key
Your public key has been saved in C:\Users\yourname\.ssh\scp_key.pub
The key fingerprint is:
SHA256:/H9xHhwzu3YwHS45234zcZjX4yGMktuykNXca+c yourname@yourcomputername
The key's randomart image is:
+---[RSA 4096]----+
| ` + + |
| + +o+=oo|
| o.+. +++o|
| + +o.+f+o |
| S.o..oo. |
| oo.o 0E |
| ..+o* |
| . .O.. |
| .+=* |
+----[SHA256]-----+
2.2 部署密鑰到Ubuntu服務器
WinSCP通過SSH連接Ubuntu Linux,打開文件: /root/.ssh/authorized_keys,選擇編輯,將2.1中生成的公鑰scp_key.pub的內容全選復制,再粘貼到authorized_keys中,保存。

2.3 使用私鑰,用scp命令復制文件到本地
Windows上打開Powershell, 運行以下命令,即可將Linux服務上申請的泛域名證書復制到Windows上使用
scp -i "C:\Users\yourname\.ssh\scp_key" bkt@bktai.com:/root/.acme.sh/bktai.com_ecc/fullchain.cer D:\test
scp -i "C:\Users\yourname\.ssh\scp_key" bkt@bktai.com:/root/.acme.sh/bktai.com_ecc/bktai.com.key D:\test
解釋一下 scp 命令:
scp -i "C:\Users\yourname\.ssh\scp_key" bkt@bktai.com:/root/.acme.sh/bktai.com_ecc/fullchain.cer D:\test
-
scp: 這是命令本身,代表“安全復制”(secure copy)。它使用SSH(Secure Shell)進行數據傳輸,并提供與SSH相同的身份驗證和安全性。 -
-i "C:\Users\yourname\.ssh\scp_key":-i: 這個標志指定了一個身份文件(私鑰)的路徑,用于公鑰認證。"C:\Users\yourname\.ssh\scp_key": 這是您本地Windows機器上私有SSH密鑰文件的絕對路徑。scp將嘗試使用此密鑰與遠程服務器進行身份驗證,而不是使用密碼。請將yourname替換為您實際的Windows用戶名。
-
bkt@bktai.com:/root/.acme.sh/bktai.com_ecc/fullchain.cer: 這是您要復制的文件的源。bkt: 這是scp用于登錄遠程服務器 (bktai.com) 的用戶名。bktai.com: 這是遠程服務器的主機名或IP地址。:/root/.acme.sh/bktai.com_ecc/fullchain.cer: 這是您要復制的遠程服務器上文件的絕對路徑。在這種情況下,它似乎是一個名為fullchain.cer的SSL/TLS證書文件。
-
D:\test: 這是復制文件在您的本地Windows機器上保存的目標。D:\test: 這指定了fullchain.cer文件將被復制到您D:盤上的test目錄中。如果D:\test是一個目錄,文件將被保存為D:\test\fullchain.cer。如果D:\test是一個文件名且D:\目錄存在,它將覆蓋D:\中的test文件。通常,D:\test會是一個已經存在的目錄。
總而言之,此命令正在嘗試:
安全地將遠程服務器 bktai.com 上 /root/.acme.sh/bktai.com_ecc/ 目錄中的 fullchain.cer 文件(使用用戶 bkt 登錄并使用SSH密鑰 C:\Users\yourname\.ssh\scp_key 進行身份驗證)復制到您本地Windows機器上的 D:\test 目錄。

浙公網安備 33010602011771號