前言
SSH默认使用密码验证登录,这种登录方式存在一些问题:弱密码不安全,复杂密码易忘记,每次登录还需手动输入等麻烦。而使用SSH密钥登录,则完全解决上述方法存在的问题,不仅安全可靠,而且自动登录,省时省力。SSH 密钥登录采用的是非对称加密,需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(称为“签名”),也只有使用对应的公钥解密。
今天以搬瓦工VPS为例,做下密钥设置和使用的案例,供大家交流学习。
SSH Key密钥设置与使用
密钥生成主要有以下两种方式,本文将按照两种生成方式分别演示,大家二选一,使用其中一种方式即可。
- puttygen.exe执行生成
- 终端执行ssh-keygen命令生成
puttygen.exe生成密钥与使用
- 启动puttygen.exe,根据界面工具栏Key的参数配置生成,点击**“Generate”**按钮;
- 完成密钥生成后,需要把公钥信息全选复制,粘贴至搬瓦工SSH KEY的页面的Paste new public SSH keys here····处,点击**“Save SSH Keys”**按钮,即可完成公钥上传vps;
- 在puttygen.exe界面,点击**“Save private key”**按钮,保存导出对应的私钥文件,文件名自定义即可。
注意:上述步骤完成公私密钥的生成,搬瓦工vps只有在重装操作系统才会生效启用密钥登录。
下面按重装和不重装操作系统两种场景演示,大家根据需要二选其一即可。
这里默认vps操作系统已重装,公钥自动上传完毕,接下来演示客户端的私钥使用登录:
- 打开Finalshell.exe,打开**“连接管理器”,“编辑”需要使用密钥登录的vps,认证方法选择“公钥”**;
- 点击私钥**“浏览”按钮,将其刚刚导出的私钥文件按照文件存放路径,导入即可,最后点击“确定”**完成编辑;
- 找到**“快速连接”**的vps,双击即可实现密钥登录。
在不重装操作系统的环境下,实现vps密钥登录设置:
- 启动puttygen.exe,点击**“Generate”**按钮;
- 完成密钥生成后,需要把公钥信息全选复制,打开Finalshell登录vps,打开**/root/.ssh/authorized_keys**,粘贴公钥信息并保存;
- 在puttygen.exe点击**“Save private key”**按钮,保存导出私钥文件并记好私钥存放路径;
- 回到Finalshell软件,打开**“连接管理器”,“编辑”需要使用密钥登录的vps,认证方法选择“公钥”**;
- 点击私钥**“浏览”按钮,将其刚刚导出的私钥文件按照文件存放路径,导入即可,最后点击“确定”**完成编辑;
- 找到**“快速连接”**的vps,双击即可实现密钥登录。
ssh-keygen命令生成密钥与使用
ssh-keygen命令生成密钥可以在服务端或客户端执行,只不过客户端涉及上传相对麻烦点,所以这里还是以搬瓦工vps为例,在vps终端做下服务端生成密钥演示:
root@localhost:# ssh-keygen# chmod 600
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:sz9MGBOnPXb/vXF5D1MZRepYthmVAp2lSdFcgVA/TI0 root@localhost.localdomain
The key’s randomart image is:
+—[RSA 3072]—-+
o=+B*X
. . .=E*o
= o*=
+ + .= ++
S= o..+..
.o. …
.o o++
.o oB
.. .o
+—-[SHA256]—–+
root@localhost:/.ssh/id_rsa# chmod 600 ~/.ssh/id_rsa.pub
root@localhost:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 使用Finalshell登录vps终端,输入ssh-keygen敲回车;
- 系统提示密钥存放默认路径,这里默认路径敲回车;
- 系统提示是否为私钥提供加密,回车为不加密,这里输入“yugogo”加密。
密码自定义 - 分别对生成的公私密钥文件释放权限,
chmod 600 ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa.pub; - 使用Finalshell打开**/root/.ssh/authorized_keys**,把原有的公钥信息删除并保存,没有的跳过此步骤;
- 输入
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys敲回车,将公钥信息导进authorized_keys文件里; - 在Finalshell文件中,此/root/.ssh路径,选择id_rsa下载私钥文件到本地;
- 关闭原有连接,打开**“连接管理器”,“编辑”需要使用密钥登录的vps,认证方法选择“公钥”**;
- 点击私钥**“浏览”按钮,将其刚刚下载的私钥文件按照存放路径导入,私钥密码填入:“yugogo”,最后点击“确定”**完成编辑;
- 找到**“快速连接”**的vps,双击即可实现密钥登录。
SSH Key后记
如果想禁用vps密码验证登录,可以在vps终端,找到sshd的配置文件**/etc/ssh/sshd_config**,将PasswordAuthentication这一项设为no。
SSH密钥登录确实比密码登录验证更安全可靠,但用上并不代表绝对安全,需要保管好私钥文件,不能泄露私钥,除非给私钥再加一层密码保护,大家根据自己需要安排。
注意:上述不论何种方法,在操作过程中,务必将公钥和私钥信息整理完毕,确保私钥文件下载到本地,才能关闭已有连接的终端界面,否则vps因找不到私钥文件最终无法解密公钥验证登录,只能以密码形式验证或搬瓦工控制面板找到**“Root password reset”**重置。
puttygen.exe和ssh-keygen命令生成密钥与使用,个人从便利角度建议大家使用puttygen.exe本地生成密钥更稳妥。
SSH Key密钥登录技术搭建视频详见youtube我的频道。
转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lanhebe@gmail.com