如何为DigitalOcean上的服务器配置SSH密钥
本指南适用于mac OS和Linux,windows用户请绕道。
通常,当你启动DigitalOcean droplets时,只要过程完成,你会收到一封电子邮件,让你知道droplets的IP地址和密码。尽管此电子邮件非常方便,但是如果可以无需电子邮件即可获得访问服务器的更安全(更快)的方式那肯定就再好不过了。这可以通过设置SSH密钥来完成。
SSH密钥是计算机与服务器之间的密钥对,如果服务器在您登录的计算机上看到匹配的密钥,则允许服务器进行连接。尽管密码最终可能通过强力攻击破解,但SSH密钥几乎不可能通过强力破解。您可以通过将计算机的SSH密钥添加到控制面板,使用已经在其上设置的SSH密钥创建新的DigitalOcean droplets。
第一步 - 创建RSA密钥对
第一步是在客户机上创建密钥对(一般就是本机):
ssh-keygen
第二步 - 存储密钥和密码
一旦输入了Gen Key命令,你将会得到更多的问题:
输入保存密钥的文件(/demo/.ssh/id_rsa):
可以在这里按回车,将文件保存到用户主目录(在这种情况下,我的示例用户名为demo)。
输入密码(没有密码时为空):
这是用于生成SSH的密码,推荐用一个好记的密码,整个密钥生成过程如下所示:
ssh-keygen
生成公钥/私钥rsa密钥对。
输入保存密钥的文件(/demo/.ssh/id_rsa):
输入密码(没有密码时为空):
再次输入相同的密码:
您的身份已保存在/demo/.ssh/id_rsa中。
您的公钥已保存在/demo/.ssh/id_rsa.pub中。
关键指纹是:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo @ a
密钥的randomart图像是:
+ - [RSA 2048] ---- +
| .oo。|
| 。oE |
| +。o |
| 。= =。|
| = S =。|
| o + = + |
| 。o + o。|
| 。o |
| |
+ ----------------- +
公钥现在位于/demo/.ssh/id_rsa.pub,私钥(标识)现在位于/demo/.ssh/id_rsa中
第三步 - 复制SSH密钥
一旦设置了SSH密钥,就可以将其复制到控制面板中。打开SSH页面,然后单击创建新的SSH密钥按钮。
应该出现一个弹出窗口
小方框中写入创建名称(例如“家用计算机”)
大方框中复制并粘贴在步骤2中创建的公钥。
以下命令可以得到密钥:
cat〜/.ssh /id_rsa.pub
点击保存。
第四步 - 打开一个新的服务器
前面的步骤解释了如何使用预先安装的SSH密钥设置服务器。但是,不能使用控制面板将按键添加到已创建的 droplets。
为了向预先存在的服务器添加其他键,可以使用SSH粘贴键:
cat ~/.ssh/id_rsa.pub | ssh root@[your.ip.address.here] "cat >> ~/.ssh/authorized_keys"
在实际启动新服务器时,从“Create a Droplet”屏幕中可以选择已有的密钥,选择一个安装到服务器上就可以
第五步 - 连接服务器
使用预先安装的SSH密钥创建服务器后,可以按照与之前相同的方式连接到服务器:
ssh root@[your.ip.address.here]
但是,现在,从共享密钥对的计算机进行连接时,不需要输入密码即可登录到root用户。
主机键警告
如果在创建要连接的服务器之前直接摧毁了服务器,则可能会看到如下消息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@警告:远程主机标识已更改!@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
它可能是某人正在做某事的地方!
现在有人可能会窃听你(中间人攻击)!
主机密钥刚刚更改也是可能的。
...
如果是这种情况,新服务器可能具有与旧的相同的IP地址,但是具有不同的主机SSH密钥可以通过运行以下命令来删除警告,方法是从系统中删除旧的主机密钥:
ssh-keygen -R [your.ip.address.here]
现在尝试再次连接到服务器。
步骤六锁定根SSH访问仅密钥
在确认现在可以以root用户身份登录到服务器而没有提示输入密码后,可以禁用root用户的密码登录。这使得服务器更安全,因为没有人可以暴力破解SSH密码。
有必要编辑服务器的SSHd配置/etc/ssh/sshd_config并更新以下行以读取:
PermitRootLogin 不带密码
现在有必要重新启动或重新启动sshd进程以重新读取新配置。这可以通过以下方式完成:
#ps auxw | grep ssh
USER PID%CPU%MEM VSZ RSS TTY STAT START TIME COMMAND
根 681 0.0 0.1 49948 2332?Ss 2012 3:23 / usr / sbin / sshd -D
#kill -HUP 681
现在,服务器的root登录名受到保护,可以通过尝试以root用户身份从未共享密钥的系统向此服务器进行SSH测试,将自动踢出而不会提示输入root密码。
如何为DigitalOcean上的服务器配置SSH密钥的更多相关文章
- windows下生成上传git时需要用的SSH密钥
参考:Windows上传代码到Github 打开“Git Bash” 输入 ssh-keygen -C "your email" -t rsa 出现如下结果: 成功后,信息里会显示 ...
- Mac OS X下配置远程Linux 服务器SSH密钥认证自动登录
1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...
- 烂泥:学习ssh之ssh密钥随身携带
本文由秀依林枫提供友情赞助,首发于烂泥行天下 在上一篇文章<烂泥:学习ssh之ssh无密码登陆>中,我们讲解了如何使用ssh密钥,免密码登陆服务器. 这篇文章我们再来讲解,如何把已经生成的 ...
- 添加SSH密钥到GitHub
$ clip < ~/.ssh/id_rsa.pubbash: /c/Users/UsersName/.ssh/id_rsa.pub: No such file or directory [转] ...
- Windows系统上如何使用SSH
Windows系统上如何使用SSH 传统的网络服务程序如FTP.Telnet等,在网络上一般使用明文传送数据.用户账号和口令信息,容易受到中间人的攻击.用户利用SSH协议后能有效防止DNS及IP欺骗, ...
- [转] SSH 密钥认证机制
使用 RSA 密钥对进行 SSH 登录验证 使用 RSA 密钥对验证 SSH 的优点是 1) 不用打密码 2) 比密码验证更安全:缺点是 1) 第一次配置的时候有点麻烦 2) 私钥需要小心保存.Any ...
- git使用ssh密钥和https两种认证方式汇总(转)
在版本库的SSH方式和HTTPS方式是不同的,具体来说就是url信息的不同,但是,实际的认证机制也是不同的.当建立了本机密钥之后,使用ssh方式实际上是不需要再次认证的,而https则每次需要输入密码 ...
- Linux ssh密钥自动登录(转)
在开发中,经常需要从一台主机ssh登陆到另一台主机去,每次都需要输一次login/Password,很繁琐.使用密钥登陆就可以不用输入用户名和密码了 实现从主机A免密码登陆到主机B,需要以下几个步骤: ...
随机推荐
- laravel 5 : Class 'input' not found
在配置文件中:config\app.php 加上 'Input' => Illuminate\Support\Facades\Input::class, 或者 引用 :use Illumina ...
- mysqldump导出数据时,某些表不导出,排除某些表,不导出某些表
需求说明: 今天一同事问,在通过mysqldump导出数据库的时候,能不能把某些表不导出,或者叫做排除在外呢, 记得应该是可以实现,就搜索了下,通过mysqldump的--ignore-table参数 ...
- [Tensorflow] RNN - 03. MultiRNNCell for Digit Prediction
Ref: http://blog.csdn.net/u014595019/article/details/52759104 Time: 2min Successfully downloaded tra ...
- 报错libtest: error while loading shared libraries: libuv.so.1: cannot open shared object file: No such file or directory
使用g++编译.运行libuv的demo错误解决 我们通过例子来讲述监视器的使用. 例子中空转监视器回调函数被不断地重复调用, 通过例子我们也可以了解到: 由于设置了监视器, 所以调用 uv_run ...
- ftp如何使用命令上传文件
本地上传到服务器的步骤如下: 1."开始"-"运行"-输入"FTP" 2.open qint.ithot.net 这一步可以与第一步合并,在 ...
- DataGridView实时提交
自定义了一个工具,根据DataGridView中的值进行其他操作.在DataGridView中修改了值,直接做其他操作时, 结果DataGridview中的值显示为a,则操作的属性却是没修改后的值b. ...
- uploadify中文开发文档,解决php多图上传
图片上传好用插件有,比如 uploadify ueditor html5的各种ajax上传插件,大部分都是异步,返回只是true之类,有些时候需要上传图片需要一起上传,其实可以通过操作流程来避免这个 ...
- 基础知识系列☞关键字→virtual
看到自己以前的一篇博客,感觉还差点什么,√,代码... using System; namespace Test { public class Program { private static voi ...
- {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析
MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...
- WPF 依赖属性和附加属性
依赖属性: 依赖属性就是自己没有值,通过Binding从数据源获得值,就是依赖在别人身上,拥有依赖属性的对象称为依赖对象. 依赖属性的值存在哪里? 在WPF运行时,维护了一个全局的Hashtable存 ...