请教,如何使用 SSH Key + Config 能够更安全??

2016-03-29 01:36:30 +08:00
 SharkIng
最近在折腾各种服务器,很喜欢在.ssh/config 里面配置上不同服务器地址,搭配上 Key ,方便以后使用。密码都免了。

其实看到 V2 上很多人也都用这个办法,可是突然想到一个问题:这个怎么能够更安全的做好加密呢??

我说的加密不是链接上的加密,也不是服务器本身的加密,而是对于电脑端的。举例说,你要是有好几十个服务器,有可能用不同的 Key 也有可能用同一个 Key ,所有 Key 都存在你的.ssh 文件夹里。那么!:如果你电脑丢了岂不是 Key 也就丢了?

那么问题来了:
1 , 如何更安全的备份。放在 Dropbox 之类的地方肯定不算最安全的,现在能想到的就是放在 U 盘中,但是 U 盘也是有丢的可能啊。

2 , 如果电脑丢了,那是不是就说明 Key 泄漏了呢?这种问题怎么办?有没有什么可靠的加密办法能够加密.ssh 中的文件的??

3 ,有没有什么办法能够批量在服务器上修改 SSH Key ?(如果丢了之后需要修改)

4 , 如果丢了,也没有备份,那么是不是完全就丢失这个服务器的访问权了?

PS:另外问一下 .ssh/config 中配置Key文件的时候,如果文件PATH中有空格和特殊符号怎么办?
2761 次点击
所在节点    问与答
24 条回复
New2016
2016-03-29 01:44:29 +08:00
vps 商都有 VNC 控制台 /其他替代的管理方式的
密钥设置密码,密钥丢了就 vnc 上去开启密码登录
msg7086
2016-03-29 02:26:07 +08:00
服务器上同时存公钥和私钥。
泄露了就生成新的密钥然后覆盖到远程目录里就好了。
LINAICAI
2016-03-29 02:32:32 +08:00
@msg7086 他应该已经禁止了 root 远程登录了,又丢了私钥还怎么生成新的秘钥?
服务器存私钥。。。总不太好的感觉
msg7086
2016-03-29 02:41:28 +08:00
@LINAICAI 丢私钥?很难丢的。
服务器存私钥还好吧,反正只有 Root 可见。要能用 Root 登录,那说明私钥已经泄露了。
SharkIng
2016-03-29 03:07:42 +08:00
@LINAICAI
@msg7086
的确基本禁止了 root 登陆,单独用户+密钥登陆是我最近比较常用的办法。

两个全部存在服务器上感觉安全性还是低一些,密钥还是想自己存。

其实这都不是重点,主要是自己电脑(笔记本/家里台式机)上的密钥如何能保证安全。毕竟现在这个社会,你说你电脑完全不丢失不可能的,丢了,就有风险密钥被别人看到/使用


@New2016 密钥设置密码这个因为一些原因无法办到.... 例如公司里现有密钥就没有密码。当然还有设置密钥的初衷就是免密码登陆,给密钥再设置一个密码感觉有点麻烦了
msg7086
2016-03-29 03:50:02 +08:00
@SharkIng 丢了就重新生成密钥对然后复制上去就行了呗,覆盖掉老的 authorized_keys 就行了。
SharkIng
2016-03-29 04:49:24 +08:00
@msg7086 一两个机子还好,如果是好几百个机子的话,有没有比较便捷的办法?
msg7086
2016-03-29 05:26:08 +08:00
@SharkIng 你如果有地址列表的话一个循环就能解决了吧。
shiji
2016-03-29 05:58:49 +08:00
================
SSH 私钥的基本操作建议:
给最安全的电脑放上云主机(比如 DO )默认的/最基本的那个私钥。
然后用这个最安全的电脑把别的电脑的公钥们分发到各个服务器去。
然后你每个电脑就用属于自己的私钥,丢了/泄露了 就用别的电脑 增加/删除服务器们的 authorized_keys

核心就是,一个本地设备 /严格说是 SSH Client ,一对密钥,不要把你的私钥放在 U 盘里拷来拷去到别的电脑,这样极其不安全。
================


1 , 如何更安全的备份。放在 Dropbox 之类的地方肯定不算最安全的,现在能想到的就是放在 U 盘中,但是 U 盘也是有丢的可能啊。

不需要备份,丢了就让它丢了。

2 , 如果电脑丢了,那是不是就说明 Key 泄漏了呢?这种问题怎么办?有没有什么可靠的加密办法能够加密.ssh 中的文件的??

建议给私钥设置强密码,这样即使泄露了,穷举密码破解也得需要至少几天时间。另外 windows 可以使用系统自带的加密(右键属性里面的,加密之后文件名变绿的那个),这样你即使没有全盘加密,别人拿走你的硬盘也搞不到私钥。

3 ,有没有什么办法能够批量在服务器上修改 SSH Key ?(如果丢了之后需要修改)

上百个服务器你得动手写个小脚本,我就五六台,用 iterm 全部打开,然后有个广播功能,能把输入的指令广播给每一个 ssh 窗口。 添加公钥的方法也有很多, ssh-copy-id 可以,甚至直接 wget 下载你之前上传好到某个 web 服务器的公钥也是可以的。

4 , 如果丢了,也没有备份,那么是不是完全就丢失这个服务器的访问权了?

如果那么不巧,你所有电脑的私钥都同时丢了/泄露了:
大部分云主机都还好可以直接重置,或者支持远程管理模块/远程 KVM 之类的独服也还有救。如果这些都没有,你就得去机房走一趟了。

PS :另外问一下 .ssh/config 中配置 Key 文件的时候,如果文件 PATH 中有空格和特殊符号怎么办?
按照常理来说:套双引号 或者 空格前加 \ 试试。
DravenJohnson
2016-03-29 06:17:53 +08:00
我们公司是用一个自己写的程序保存密钥,会加密上传到公司服务器上,然后本地需要使用的时候会有一个临时文件,当平台关闭临时文件自动删除。解决备份,分享,和个人电脑丢失问题
SharkIng
2016-03-29 06:29:41 +08:00
感谢各位回复:


@msg7086 现在只能这样写一个小脚本解决了,主要是想考虑好免得以后出问题


@shiji 空格那个问题加 \ 和 “” 都试了不行,暂时放弃了。不备份的话如果丢失,解决起来会有多少难度呢??另外加密这个的确做不到(不是不想做)所以还是需要考虑如果电脑丢了的安全问题
chengn1996342
2016-03-29 06:47:01 +08:00
用智能卡,类似于 yubikey 这种
jasontse
2016-03-29 07:28:26 +08:00
Passphrase
ryd994
2016-03-29 08:24:56 +08:00
智能卡大法好,输错三次密码锁住,再输错三次管理密码自毁
不怕泄密只要不被社工
备份………你不会在家里藏个 U 盘么?真要丢了再买个 yubikey 就好
ghostheaven
2016-03-29 08:25:28 +08:00
lastpass
rainysia
2016-03-29 09:38:39 +08:00
要安全, 走 kerberos
lhbc
2016-03-29 09:47:05 +08:00
一机一 key ,本地 BitLocker 加密同步到 Dropbox
kkxxxxxxx
2016-03-29 09:54:07 +08:00
BtSync 一份到手机
SpicyCat
2016-03-29 12:32:48 +08:00
@msg7086 把私钥 存到服务器的目的是啥?私钥要是丢了,改掉 authorized_keys 文件不就行了吗?
SpicyCat
2016-03-29 12:34:27 +08:00
安全和便利是矛盾的,而且提升安全也意味着提升成本。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/266979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX