让AI来做
我需要一台开发服务器:带SSH访问和开发工具的VM。我向Claude Code描述了我想要的,让它处理配置。
提示
我要求一台Vultr VM,配置8核和32GB内存,只能通过Tailscale访问,具有能在网络中断后恢复的持久会话。
Claude Code构建的内容
1. 通过Vultr API配置VM
它创建了一个8核/32GB的Ubuntu实例,等待IP可用,然后以root身份SSH连接。
2. 强化SSH
Port 49152 # 随机高端口
PermitRootLogin no
PasswordAuthentication no
ListenAddress 100.x.x.x # 仅Tailscale接口
仅基于密钥的认证,仅在Tailscale接口上监听。
3. 设置三层防火墙
- UFW:拒绝除Tailscale子网外的所有传入连接
- fail2ban:登录尝试失败后自动封禁IP
- Vultr防火墙:在虚拟化程序级别阻止所有连接
4. 安装启用了SSH的Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --ssh --authkey=$TAILSCALE_KEY
这通过Tailscale的内置SSH服务器创建了第二条SSH路径,独立于OpenSSH。
5. 安装开发栈
Node.js(通过nvm)、Python(通过pyenv)、Docker和常用工具。配置Docker无需sudo运行。
6. 使用tmux设置持久会话
一个启动脚本,自动重新连接到现有会话,这样网络中断就不会终止正在运行的进程。
7. 创建本地管理脚本
在我的笔记本电脑上创建dev-start和dev-stop脚本,通过Vultr API启动和停止VM。
锁定
完成后,Claude Code通过尝试以root身份SSH连接来验证root登录是否已禁用。登录失败。fail2ban注意到失败的尝试并封禁了我们。
Claude Code已将Tailscale SSH设置为备用路径。它使用tailscale ssh重新进入并执行:
fail2ban-client set sshd unbanip 100.x.x.x
配置
你需要:
- Claude Code(或具有工具使用能力的类似AI)
- 云提供商账户(Vultr、DigitalOcean、AWS等)
- Tailscale账户
将API密钥存储为环境变量并按名称引用它们(例如$VULTR_API_KEY),这样机密就不会出现在对话中。
示例提示:
在Vultr上创建一个8核VM,锁定它使其只能通过Tailscale访问,设置Node/Python/Docker,并给我启动和停止它的脚本。