怎样用 SSH-Key 登录服务器


一.概述

  • 此教程是对 MacOS 和 Linux 用户适用的.
  • 通常我们登录远程服务器使用 IP, 用户名, 密码的方式, 从安全角度考虑, 防止脚本暴力破解, 推荐使用 SSH-Key 登录.
  • 此外, 目前还有一种 denyhosts 的方式防止暴力破解.
  • SSH-Key 是客户端与服务器之间建立的一对密钥, 如果服务器和客户端的密钥匹配, 则允许服务器进行连接.

二.流程

Step1. 创建 RSA 密钥对

  • 第一步,在客户端创建密钥对.
ssh-keygen -t rsa

Step2. 存储密钥

  • 输入 keygen 命令后, 会有以下几个问题, 简单处理就是, 一路回车键.
# 设置存储路径
Enter file in which to save the key (/demo/.ssh/id_rsa):
# 设置密钥密码
Enter passphrase (empty for no passphrase):
  • 完成后, 公钥保存在 /demo/.ssh/id_rsa.pub, 私钥保存在 /demo/.ssh/id_rsa.
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /demo/.ssh/id_rsa.
Your public key has been saved in /demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

Step3. 密钥添加到服务器

  • 添加公钥到服务器的 authorized_keys 文件.
cat ~/.ssh/id_rsa.pub | ssh root@[your.ip.address.here] "cat >> ~/.ssh/authorized_keys"

Step4. 登录服务器

  • 使用私钥登录服务器.
ssh -i [your.private.key.here] root@[your.ip.address.here]

Step5. 禁用密码登录, 只允许 SSH-Key 登录

  • 如果你确认你可以用 SSH-Key 方式成功登录, 你可以禁用密码登录.
  • 需要编辑服务器的 SSHd 配置文件 /etc/ssh/sshd_config:
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords yes
PermitEmptyPasswords no
#PasswordAuthentication yes
PasswordAuthentication no

Step6. 重启服务

  • 重启 sshd 服务, 大功告成.
service sshd restart

三.参考链接

此文参考于 digitalocean的文档,十分感谢. 所有引用内容版权归原作者所有. 使用 知识共享“署名-非商业性使用-相同方式共享 3.0 中国大陆”许可协议 授权.

最近的文章

drawRect 和 layoutSubview 区别

一.概述 setNeedsDisplay 异步执行, 自动调用 drawRect 方法, 拿到 UIGraphicsGetCurrentContext, 方便视图重绘. setNeedsLayout 异步执行, 自动调用 layoutSubViews 方法, 处理子视图中的一些数据, 方便数据计算, 用来调整子视图的尺寸和位置. layoutSubviews 方法调用先于 drawRect. 程序的生命周期和代码执行顺序:// 当一个视图控制器被创建, 并在屏幕上显示的...…

初学者继续阅读
更早的文章

语义化版本 2.0.0

一.摘要 版本格式: 主版本号.次版本号.修订号, 版本号递增规则如下: 主版本号: 当你做了不兼容的 API 修改. 次版本号: 当你做了向下兼容的功能性新增. 修订号: 当你做了向下兼容的问题修正. 先行版本号及版本编译信息可以加到 “主版本号.次版本号.修订号” 的后面, 作为延伸.二.简介 在软件管理的领域里存在着被称作 “依赖地狱” 的死亡之谷, 系统规模越大, 加入的套件越多, 你就越有可能在未来的某一天发现自己已...…

初学者继续阅读