EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

Linux新手入门第十六天——WinSCP使用密钥登录

WinSCP下生成RSA密钥:

步骤1:打开WinSCP

S1

步骤2:点击工具-运行PuTTYgen

S2

步骤3:点击Generate生成一段随机公钥,这个时候请不停地移动鼠标,直到进度条满

S2

步骤4:Generate完成!

complete

UI说明:

Key passphrase:密钥的密码,这是一个额外的东西,防止你的私钥被偷后直接用,可填可不填。

Confirm passphrase:确认密码。

Generate:生成一对 公钥/私钥 钥匙对。

Load:加载一份已经存在的私钥文件。

Save public key:保存公钥。

Save private key:保存私钥。

Parameters:选择一个加密算法,这里默认是RSA。

Number of bits in a generated key:数字越大,安全性越高,默认2048。

注意,这个时候,你已经生成了一对密钥,

然后点 Save public key 保存公钥,点 Save private Key 保存私钥。

点 Save private Key 的时候,如果你不设置额外密码的话,估计还会提醒一下。

我倒是建议你不记得的话,建议别设置,不然挺麻烦的。(今天重写这篇也是因为这个)

 

 

验证过程:

服务器→客户机【公钥加密】的内容,客户机用自己的【私钥解密】查看。

这样的好处是,即使第三方窃取了服务器发来的内容,但是由于没有客户机的私钥,所以无法查看内容。(保证了信息的安全性)

同时,我们要验证这是服务器发来的信息,那么就需要用服务器的公钥去解密内容,能正确解密,则能证明是服务器的内容。

 

补充一下:1台机器持有3样东西,自己的私钥公钥对方的公钥

对方的公钥,一般的情况下是不直接在网络上公开的,虽然可以公开。

 

Windows上生成公钥和私钥(只是演示):

① 打开cmd

② 输入ssh-keygen

③ 然后一直Enter

你会在C:\Users\XXX\.ssh\文件下找到公钥和私钥的两个文件:

S2

id_rsa是私钥,id_rsa.pub是公钥,你需要把公钥交给Linux服务器,你需要将公钥内容追加到Linux服务器的/root/.ssh/authorized_keys文件里。

 

操作追加的话,建议使用刚才WinSCP自带的PuTTYgen,至于为什么的话,请看这里:

关于WinSCP下的工具PuTTYgen生成的密钥和CMD ssh-keygen生成的密钥有什么不同?

如图所示,追加内容:

追加完成

注意以下操作全在root用户下进行

mkdir /root/.ssh
chmod 700 /root/.ssh
vim /root/.ssh/authorized_keys

刚才生成的public key文件,用记事本打开,把从AAA开头的部分,到

---- END SSH2 PUBLIC KEY ----

之前所有的复制下来,如上图所示粘贴到authorized_keys里面。

注意你复制过去的内容,只能占一行,需要你手动把那好几行合并成一行。

最后,要确保authorized_keys的权限是600:

chmod 600 /root/.ssh/authorized_keys

追加还不够,其实最好要禁止SSH使用密码登录,具体请看→这里

一般服务器为了安全禁止ssh下root账号登录,此时使用sftp登录管理服务器只能使用普通账号登录,所以访问路径的时候,经常会碰到权限不足的问题。(有利有弊)

 

 

【目录】Linux新手入门——从理论到实战

 

 

参考文档:

[1] WinSCP使用密钥登陆服务器

[2] Winscp使用密钥登录

[3] Windows下生成ssh密钥,并用ssh免密访问Linux服务器

[4] 粘贴到/root/.ssh/authorized_keys 文件中

[5] putty 使用密钥登陆 OpenSSH

This article was last edited at 2023-04-21 22:45:01

* *