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
目录。