WinSCP下生成RSA密钥:
步骤1:打开WinSCP
步骤2:点击工具-运行PuTTYgen
步骤3:点击Generate生成一段随机公钥,这个时候请不停地移动鼠标,直到进度条满
步骤4:Generate完成!
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\文件下找到公钥和私钥的两个文件:
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登录管理服务器只能使用普通账号登录,所以访问路径的时候,经常会碰到权限不足的问题。(有利有弊)
参考文档:
[3] Windows下生成ssh密钥,并用ssh免密访问Linux服务器