搬瓦工等VPS,你必学的专项技能——SSH Key密钥设置与使用

前言

SSH默认使用密码验证登录,这种登录方式存在一些问题弱密码不安全,复杂密码易忘记,每次登录还需手动输入等麻烦。而使用SSH密钥登录,则完全解决上述方法存在的问题,不仅安全可靠,而且自动登录,省时省力。SSH 密钥登录采用的是非对称加密,需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(称为“签名”),也只有使用对应的公钥解密。
      今天以搬瓦工VPS为例,做下密钥设置和使用的案例,供大家交流学习。

SSH Key密钥设置与使用

密钥生成主要有以下两种方式,本文将按照两种生成方式分别演示,大家二选一,使用其中一种方式即可。
  • puttygen.exe执行生成
  • 终端执行ssh-keygen命令生成

puttygen.exe生成密钥与使用

  1. 启动puttygen.exe,根据界面工具栏Key的参数配置生成,点击“Generate”按钮;
  2. 完成密钥生成后,需要把公钥信息全选复制,粘贴至搬瓦工SSH KEY的页面的Paste new public SSH keys here····处,点击“Save SSH Keys”按钮,即可完成公钥上传vps;
  3. 在puttygen.exe界面,点击“Save private key”按钮,保存导出对应的私钥文件,文件名自定义即可。
注意:上述步骤完成公私密钥的生成,搬瓦工vps只有在重装操作系统才会生效启用密钥登录。

下面按重装和不重装操作系统两种场景演示,大家根据需要二选其一即可。

这里默认vps操作系统已重装,公钥自动上传完毕,接下来演示客户端的私钥使用登录:
  1. 打开Finalshell.exe,打开“连接管理器”,“编辑”需要使用密钥登录的vps,认证方法选择“公钥”
  2. 点击私钥“浏览”按钮,将其刚刚导出的私钥文件按照文件存放路径,导入即可,最后点击“确定”完成编辑;
  3. 找到“快速连接”的vps,双击即可实现密钥登录。
在不重装操作系统的环境下,实现vps密钥登录设置:
  1. 启动puttygen.exe,点击“Generate”按钮;
  2. 完成密钥生成后,需要把公钥信息全选复制,打开Finalshell登录vps,打开/root/.ssh/authorized_keys,粘贴公钥信息并保存;
  3. 在puttygen.exe点击“Save private key”按钮,保存导出私钥文件并记好私钥存放路径;
  4. 回到Finalshell软件,打开“连接管理器”,“编辑”需要使用密钥登录的vps,认证方法选择“公钥”
  5. 点击私钥“浏览”按钮,将其刚刚导出的私钥文件按照文件存放路径,导入即可,最后点击“确定”完成编辑;
  6. 找到“快速连接”的vps,双击即可实现密钥登录。

ssh-keygen命令生成密钥与使用

ssh-keygen命令生成密钥可以在服务端或客户端执行,只不过客户端涉及上传相对麻烦点,所以这里还是以搬瓦工vps为例,在vps终端做下服务端生成密钥演示:

root@localhost:~# ssh-keygen
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:~# chmod 600 ~/.ssh/id_rsa
root@localhost:~# chmod 600 ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  1. 使用Finalshell登录vps终端,输入ssh-keygen敲回车;
  2. 系统提示密钥存放默认路径,这里默认路径敲回车
  3. 系统提示是否为私钥提供加密,回车为不加密,这里输入“yugogo”加密。密码自定义
  4. 分别对生成的公私密钥文件释放权限,chmod 600 ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa.pub;
  5. 使用Finalshell打开/root/.ssh/authorized_keys,把原有的公钥信息删除并保存,没有的跳过此步骤;
  6. 输入cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys敲回车,将公钥信息导进authorized_keys文件里;
  7. 在Finalshell文件中,此/root/.ssh路径,选择id_rsa下载私钥文件到本地
  8. 关闭原有连接,打开“连接管理器”,“编辑”需要使用密钥登录的vps,认证方法选择“公钥”
  9. 点击私钥“浏览”按钮,将其刚刚下载的私钥文件按照存放路径导入,私钥密码填入:“yugogo”,最后点击“确定”完成编辑;
  10. 找到“快速连接”的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我的频道
Little yu