大家在 debian/ubuntu 下如何管理 ssh 密码

2014-09-20 10:00:05 +08:00
 yylzcom
我现在用密钥管理软件的是keepassX,terminal用的是tilda(看重的是全局F2呼出和透明效果)

但是现在问题就来了,因为是随机生成的密码记不住,不能很方便地在keepassX里连接ssh,每次都要从keepassX里复制然后到tilda里粘贴....

用private key免密码登陆,安全性是一个问题...

难道要写个脚本,然后用keepassX的cmd命令传递ssh用户名和密码到tilda里?

大家有没有更好的办法?
9076 次点击
所在节点    Linux
100 条回复
ryd994
2014-09-21 12:12:58 +08:00
真正需要安全,就别开远程登录
ryd994
2014-09-21 12:15:27 +08:00
有空看看安全日志,看看root密码被人穷举了多少次。
ryd994
2014-09-21 12:25:45 +08:00
私钥加密是可以ssh-add,然后在登出之前都不需要再输密码了。
改~/.ssh/config也可以改变默认私钥文件的位置。还不至于有哪个恶意软件会这么聪明先搜索。
总体来讲还是物理安全重要的多。使用安全主机,甚至禁止远程登录,才是真正可靠的安全。

其实sudo一开始的目的就是提供有限的管理权限:root是不用于日常维护,而只允许本地登录的。
SharkIng
2014-09-22 03:16:32 +08:00
@Radeon 拷贝走了之后没有任何影响,密钥是加密的,没有密码一样白搭啊。
如果说用穷举法破解,那么你服务器的密码一样可以这样破解

密钥相当于一个证书和一个密码,两层保护,也许是依然有一定风险但是总的来说还是比密码好很多的,而且还方便
SharkIng
2014-09-22 03:18:48 +08:00
@ryd994 我觉得他们所怕的就是私钥泄露,我对密码学没什么研究不知道这有多大的影响,但是至少我看来及时泄露没有密码的情况下也是白搭,密码还有可能泄露呢何况一个文件

不知道我的理解对不对:即使我公布我的私钥,在私钥密码非常强大的情况下普通人也没办法很容易破解出来,相当于一个废文件罢了,对于他们得到私钥的人没有任何意义
ryd994
2014-09-22 08:27:15 +08:00
@SharkIng 也不对,
比如服务器可以限制穷举频率,banIP等,这是私钥做不到的。但我同意你说的如果私钥正确生成,即使拿到私钥也很难破解 因为私钥是aes加密的。尽管目前证明AES在某些情况下复杂度小于理论值,但增加密钥长度即可。
私钥登录并不多一个证书,因为即使密码登录,服务器会即时创建一个随机密钥用于通讯,你的密码是在加密通道里传输的。我的理解是:关闭私钥主要是为了防穷举
我的意见是:如果本地被攻陷,一切白搭。密码私钥唾手可得。所以本地安全是前提,而最安全就是不要root ssh,一个长期稳定运行的系统是不需要很多root操作的,这些操作应该用suid或者有限sudo解决。
Radeon
2014-09-22 10:35:29 +08:00
@ryd994

quote "明白sudo能干啥没?有sudor到某一个用户的权限不代表有sudo到root的权限。
这样就可以避免私钥随便被拷走了。"

不懂你在说什么。私钥在终端机上,和服务器上的sudo没有关系
Radeon
2014-09-22 10:42:03 +08:00
@ryd994

quote "比如服务器可以限制穷举频率,banIP等,这是私钥做不到的"

这就是我说的其他条件一样的情况下,不留下任何硬盘上的可供破解的原始资料更安全。今天你觉得AES是安全的,也许NSA不觉得,或者过了2年AES被曝有重大缺陷怎么办?那时候你的pass phrase保护的密钥早被人拷走了,在你修复漏洞前攻击者先出手了怎么办
Radeon
2014-09-22 10:45:58 +08:00
@ryd994

本地安全根本没有想象中好做到。开发调试阶段开发机往往被用作登陆终端。开发机上安装的软件鱼龙混杂,而且个个能读 ~/.ssh/*。开发机会被带着到处跑,会丢
ryd994
2014-09-22 11:02:29 +08:00
@Radeon
1. “不懂你在说什么。私钥在终端机上,和服务器上的sudo没有关系”
无论是客户机还是服务器,sudo都不是无限的。如果你的管理员连自己电脑安全都无法保证的话,我建议你换个人。
我说客户机上sudo是这样用的:新建一个禁止登录的用户,把私钥chown给他,今后登录的时候用sudo ssh。文件系统的permmison可以保证任何人无法读私钥,sudoer设置则可以允许某个用户以另一个用户的身份执行某程序,sudo者,被sudo者,程序,都是可限制的。
而服务器上一般用sudo比用suid少,但是两种方法都可以实现同样的效果,即非root赋予有限的管理权限。
当然,如果你客户机root被盗那就什么都没用了,无论密码还是私钥。

2. “这就是我说的其他条件一样的情况下,不留下任何硬盘上的可供破解的原始资料更安全。今天你觉得AES是安全的,也许NSA不觉得,或者过了2年AES被曝有重大缺陷怎么办?那时候你的pass phrase保护的密钥早被人拷走了,在你修复漏洞前攻击者先出手了怎么办”

同上,正确使用不存在此问题。
另外,加密从来就不是无限的。用密码还有窃听的风险呢,你怎么不说rsa加密通道的安全性?这就是我说物理隔离,安全客户机,甚至禁止root远程的原因

3. “本地安全根本没有想象中好做到。开发调试阶段开发机往往被用作登陆终端。开发机上安装的软件鱼龙混杂,而且个个能读 ~/.ssh/*。开发机会被带着到处跑,会丢”

还是那句话:如果你的管理员连自己电脑安全都无法保证的话,我建议你换个人。专机专用,这是安全的基本
Radeon
2014-09-22 11:18:16 +08:00
@ryd994

我想到另外一个问题:一般人会设定多高强度的pass phrase。如果使用私钥的本意是增加密钥长度,那么使用一个短得多的pass phrase来保护它有什么意义呢?
ryd994
2014-09-22 11:25:37 +08:00
@Radeon
可以用ssh-add管理
ryd994
2014-09-22 11:33:17 +08:00
@Radeon 保证密码强度也是管理员安全基本素养之一。
私钥密码主要还是为了减轻客户机物理接触的危害,比如我上面说的sudo法也无法阻止一个能操作客户机的恶意用户,这个恶意用户不能读取私钥,却可以直接使用,如果没密码就直接能登录了。
尽管如此,AES也不是吃素的。想穷举私钥成本不小,在发现之前能争取足够的反应时间足矣。
Radeon
2014-09-22 11:40:56 +08:00
@ryd994 ssh-add 不过是把pass phrase转移到login password上面,一样是比私钥短得多
Radeon
2014-09-22 11:43:19 +08:00
@ryd994 login用户能关掉r权限自然也能开启r权限,不存在只能用私钥不能读的情况
Radeon
2014-09-22 11:49:20 +08:00
@ryd994 noligin只是对login/shell有用,写个程序不用shell轻松绕掉
Radeon
2014-09-22 11:59:13 +08:00
@ryd994 我总结一下我的观点。任何password及其用加密链保护的变体不能保存在计算机媒介上,写在餐巾纸或者记成口诀、七言绝句都更安全。

如果一定要保存在计算机媒介上(这时已经败了),加密链上的每个保护密码的强度必须大于被保护对象才有意义
ryd994
2014-09-22 22:38:12 +08:00
@Radeon
login用户能关掉r权限自然也能开启r权限,不存在只能用私钥不能读的情况
你看懂我用sudo的作用了么?你只能sudo用,只能ssh用,除非ssh有bug否则安全

noligin只是对login/shell有用,写个程序不用shell轻松绕掉

我哪里说过nologin了?停用帐户只有root能解,但可以sudo。
ryd994
2014-09-22 22:41:47 +08:00
@Radeon
你怎么不说传输时还有破解呢?
密码会被加密传输,而私钥登录不会,这就是本质上的区别。
ryd994
2014-09-22 22:52:16 +08:00
@Radeon
如果一定要保存在计算机媒介上(这时已经败了),加密链上的每个保护密码的强度必须大于被保护对象才有意义
那照你这么说银行的服务器都该砸掉,NSA的服务器都该砸掉了?
有安全有秘密再正常不过,通过合理的权限管理,安全是可以保证的。如果那么容易就能绕过权限管理,Linux安全组都可以吃屎去了。

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

https://tanronggui.xyz/t/134601

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

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

© 2021 V2EX