举个例子:我有三台服务器,都是 ubuntu 系统。
本地环境一台笔记本以及 wsl,一台 macbook,一台台式机以及 wsl 。 还有 ipad 跟两台 iphone 。
服务器采用的是 ssh key 验证的方式登录。 现在问题来了,因为我有一些需要,这些设备都会 ssh 登录到服务器上,那么服务器上就需要具备 8 个 sshkey 。可一旦升级了 wsl,比如变更到了 wsl2,重新安装了新系统,sshkey 就变了。iphone 也是,基本上有新机器我都要换一台。积累下来,我都忘记 sshkey 都是什么了。
现在我只要用一种方法,所有的机器,都用相同的id_rsa
。
每次重装以后,我就把以前的id_rsa
以及id_rsa.pub
文件都复制到新电脑上。
这样做是不是很不安全啊?但这是我想到的最简单的办法了,虽然 8 台设备都用一个私钥文件。。
还有更好的方法没??
1
yangxin0 2020-06-20 22:00:34 +08:00 via iPhone
.ssh/config
|
2
Jirajine 2020-06-20 22:29:33 +08:00 via Android
我的做法是,本地的设备,如内网的服务器、nas 、虚拟机等都用 id_isa,购买的云服务器,每个服务商单独生成一个(如 id_azure 、id_aliyun ) 用 ssh-agent 管理。
至于自己电脑,只要不装不可信的扫描你硬盘的软件,应该问题不大。 都用同一个 key 主要的问题是一旦疑似泄漏全都得改,以及身份被关联可能有隐私问题。 |
3
PbCopy111 OP |
4
Jirajine 2020-06-20 22:47:24 +08:00 via Android
|
5
byte10 2020-06-20 22:55:26 +08:00
没搞明白你这啥需求,不是公钥登录吗?跟私钥有啥关系?
|
6
GGGG430 2020-06-20 23:06:21 +08:00 via iPhone
本地所有设备使用一套公私钥(一次生成多,然后复制整个.ssh 目录),这样所有服务器只需要信任这一套公私钥就行
|
7
PbCopy111 OP |
8
yzwduck 2020-06-21 00:00:48 +08:00 via Android
非常不推荐多个设备共用同一份密钥,一旦一个设备遗失或泄漏,所有服务器+客户端都要换密钥。
其实你需要的只是集中管理一份 authorized_keys 文件,然后写一个脚本来同步到所有服务器。 |
9
leishi1313 2020-06-21 01:16:51 +08:00 via Android
建个 dotfiles 的 repo,把你的公钥传上去,然后用 ci/cd 或者 cron 定时更新。
或者用 ansible 统一管理服务器上的 authorized_keys |
10
hyshuang2006 2020-06-21 23:52:20 +08:00
@yzwduck 多个设备共用同一份密钥,一旦一个设备遗失或泄漏,所有服务器+客户端都要换密钥。
--->服务器设置 IP 登陆限制,卡在这个位置,还用担心吗? |
11
julyclyde 2020-06-28 18:11:44 +08:00
你这不是多台服务器,而是多台客户端啊
|