我经常发现我的 IP 地址(谷歌一下我的 IP 是什么)已经发生了变化,因此 SSH 进入我的 EC2 会失败,因为它接受来自我的 IP 地址的 SSH。
我有什么选择?
1) 向我的 ISP 索要静态 IP 地址?
2) 打开 EC2 以接受来自 0.0.0.0/0 的 SSH - 仅在私钥.pem 文件上中继?
3) 继续在 AWS 安全组中更改我的 IP 地址以及我的 MongoDB 的其他托管公司。
还有其他建议吗?
答案1
选择 #3。编写一个可以运行的小脚本很简单,它可以:
- 获取当前公网 IP
- 使用该 IP 和 awscli 更新您的安全组
将此脚本粘贴到您的桌面上,只需单击两次即可更新您的 SG。或者更好的是,每小时通过 cron 运行它。
答案2
虽然其他 2 个答案提供了更安全的解决方案,但我建议使用选项 2,前提是您不允许在 SSH 中使用密码,而只允许使用公钥。您还需要确保所有加载了公钥的用户都知道如何保护它们,并检测他们是否无意中泄露了私钥。
选择选项2的原因是:
如果这台服务器能完成任何一半的工作,那么使用笔记本电脑甚至手机从任何地方访问它进行诊断或修复所减少的响应时间是值得的,尽管安全层略有减少。在紧急情况下必须开车甚至坐飞机回家可能会成为交易失败的原因。当然,距离会因团队规模而异,但你的问题听起来好像只有你一个人访问它。
答案3
我有一个更好的解决方案给你,我们称之为第四个:
- 跑步OpenVPN 服务器在你的
EC2
- 配置安全组以允许OpenVPN 连接来自整个互联网
- 仅通过以下方式访问你的 sshOpenVPN。
您可以从任何地方使用 ssh,它将对所有恶意机器人隐藏。当然,您必须使用您自己生成的证书对 VPN 进行身份验证,并且您必须真正保密您的私钥。
答案4
另一个选项可能是将一个具有随机名称的新用户添加到 sudoers,例如“myn1cknamez”。然后在 opensshd 服务器中禁用密码密钥并禁用 root 访问。然后在 /etc/ssh/sshd_config 的末尾添加:
匹配用户 myn1cknamez
密码验证 是
如果您想输入密码..
或者,您甚至可以匹配用户以启用无密码登录,一旦您在虚拟机上与该用户交换密钥即可。