Ubuntu服务器免密登录设置与测试:结合AI工具的实践

引言

作为一名开发兼运维人员,我每天要登录至少10台服务器执行命令、部署代码、查看日志。以前每次登录都要输入SSH密码,执行sudo命令还要再输一遍密码,一天下来光是输密码都要花不少时间,效率低得让人崩溃。记得有一次赶项目上线,我在1小时内登录了8台服务器,输了16次密码,最后手指都麻木了,还因为输入错误导致登录失败,差点误了上线时间。

最近我刚搭建了一台Ubuntu 24.04测试机,打算彻底解决这个问题——配置SSH免密登录+sudo免密码。过程中偶然用到了Trea AI辅助执行命令,没想到大大提高了效率,不仅减少了手动输入错误,还帮我排查了几个关键问题。今天就来分享一下我的真实实践经验,包括踩过的坑、解决方案以及多年来积累的运维心得,希望能帮助新手少走弯路。

一、操作环境

  • 服务器:Ubuntu 24.04(新搭建的测试机,主要用来测试PostgreSQL 18)
  • 客户端:Windows 10 + PowerShell 7(我常用的工作环境)
  • SSH端口:40131(特意修改了非默认端口,降低被扫描的风险)
  • 辅助工具:Trea AI(用来执行和管理命令,减少手动输入错误)
  • 密钥类型:RSA 4096位(比默认的2048位更安全)

二、免密登录设置过程

1. 准备工作:梳理登录信息与环境检查

在配置之前,我先整理了服务器的关键信息,存放在本地加密文件中(用Bitwarden管理,安全又方便):

信息项 具体内容 备注
IP地址 192.168.1.100 实际IP已隐藏,用示例IP代替
SSH端口 40131 非默认端口,需特殊处理
用户名 user 普通用户,将配置sudo免密
初始密码 P@ssw0rd123 首次登录用,配置完成后可更改
系统版本 Ubuntu 24.04 LTS 全新安装,未配置其他服务

我的准备工作习惯

  • 新服务器首次登录后,立即修改默认密码,禁用root远程登录
  • 记录所有关键配置到加密密码管理器,避免遗忘
  • 配置服务器IP为静态IP,防止IP变动导致连接失败
  • 安装基础工具包:sudo apt install -y curl wget vim git net-tools

2. 配置sudo免密码:踩了第一个坑(权限管理的重要性)

首先要解决sudo每次都要输入密码的问题。我最初的命令是这样的:

# 错误示例:直接编辑sudoers文件,风险极高!
ssh -t -p 40131 user@192.168.1.100 'echo "user ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers'

踩坑经历

  • 第一次执行这个命令时,系统提示:/etc/sudoers: syntax error near line 101
  • 结果导致sudo命令完全无法使用,差点把系统搞崩!我当时冷汗都出来了,因为服务器刚搭建,还没备份系统。
  • 后来查资料才知道,直接编辑/etc/sudoers文件是运维大忌,一旦语法错误就会导致sudo失效,严重影响系统管理。

解决方案

  • 我当时的紧急处理:重启服务器进入单用户模式,手动修复了sudoers文件
  • 正确的做法是在/etc/sudoers.d/目录下创建单独的配置文件,而不是直接修改主文件
  • 可以用visudo命令来确保语法正确,但我用了更简单的方法:
# 正确做法:创建单独的sudoers配置文件
ssh -t -p 40131 user@192.168.1.100 'echo "user ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/user' 

为什么更安全?

  • 每个用户的sudo权限单独管理,便于维护
  • 即使配置有误,也不会影响主sudoers文件
  • 系统会自动检查语法,安全可靠
  • 配置文件权限由系统自动设置为440,防止意外修改

我的sudo权限管理实践

  • 测试服务器可以配置NOPASSWD: ALL,方便调试
  • 生产服务器必须严格限制sudo命令范围,只允许执行必要的命令
  • 定期审查sudo权限,移除不再需要的权限
  • 为不同角色创建不同的sudo配置文件,如/etc/sudoers.d/dev/etc/sudoers.d/ops

3. 生成SSH密钥对:密钥管理是运维安全的基石

接下来生成SSH密钥对。我习惯为不同类型的服务器使用不同的密钥,方便管理:

# 生成4096位RSA密钥,指定文件名和注释
 echo '生成SSH密钥对...' && ssh-keygen -t rsa -b 4096 -C "ubuntu-test-server-2025" -f "$HOME/.ssh/id_rsa_ubuntu_test" -N "" && echo '密钥生成完成!'

实际执行效果

生成SSH密钥对...
Generating public/private rsa key pair.
Your identification has been saved in /home/user/.ssh/id_rsa_ubuntu_test.
Your public key has been saved in /home/user/.ssh/id_rsa_ubuntu_test.pub.
The key fingerprint is: 
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ubuntu-test-server-2025
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+
密钥生成完成!

我的密钥管理实践

  • 为不同环境(测试、生产)使用不同密钥,防止测试密钥泄露影响生产环境
  • 密钥文件名包含服务器用途和年份,如id_rsa_prod_web_2025,方便区分
  • 生产服务器的密钥必须设置密码保护:ssh-keygen -p -f ~/.ssh/id_rsa_prod
  • 定期(每6个月)更换密钥对,尤其是生产环境的密钥
  • 密钥备份到加密的云存储,防止本地设备丢失
  • 离职或换设备时,立即删除服务器上的旧公钥

踩坑经历

  • 以前我曾为所有服务器使用同一个密钥,结果有一次本地电脑被盗,我不得不紧急更换所有服务器的密钥,耗时一整天
  • 从那以后,我就养成了为不同环境使用不同密钥的习惯,大大降低了安全风险

4. 配置SSH免密登录:权限细节决定成败

现在需要把公钥传到服务器并配置正确的权限。这一步权限设置非常重要,否则密钥认证会失败!

# 步骤1:上传公钥到服务器
scp -P 40131 "$HOME/.ssh/id_rsa_ubuntu_test.pub" user@192.168.1.100:/tmp/

# 步骤2:配置公钥和权限
ssh -t -p 40131 user@192.168.1.100 'mkdir -p ~/.ssh && cat /tmp/id_rsa_ubuntu_test.pub >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && rm /tmp/id_rsa_ubuntu_test.pub'

实际执行效果

id_rsa_ubuntu_test.pub                                   100%  744     0.7KB/s   00:00    

踩坑经历

  • 第一次配置时,我忘了设置~/.ssh目录的权限,导致密钥认证失败
  • 检查日志发现:Authentication refused: bad ownership or modes for directory /home/user/.ssh
  • 当时我反复检查密钥,确认公钥已经正确添加,但就是无法免密登录,折腾了半小时才发现是权限问题

解决方案

  • 确保~/.ssh目录权限是700(只有所有者可读写执行):chmod 700 ~/.ssh
  • 确保authorized_keys文件权限是600(只有所有者可读写):chmod 600 ~/.ssh/authorized_keys
  • 确保用户主目录权限不超过755:chmod 755 ~
  • 可以用ssh -v ubuntu-test查看详细的认证过程,方便排查问题

权限设置的原理

  • SSH服务器对密钥文件的权限要求非常严格,这是出于安全考虑
  • 如果权限过于宽松,可能被其他用户修改密钥文件,导致安全漏洞
  • 所以SSH会拒绝使用权限不正确的密钥文件进行认证

我的权限检查习惯

  • 配置完成后,我会立即执行权限检查命令:
    ssh ubuntu-test 'ls -la ~ ~/.ssh ~/.ssh/authorized_keys'
    
  • 确保权限设置正确后,再进行免密登录测试

5. 配置SSH Config:多服务器管理的高效工具

如果有多个服务器,每次登录都要输入-i-p参数很麻烦。我推荐配置~/.ssh/config文件,简化登录:

# 创建或编辑SSH配置文件
echo 'Host ubuntu-test
  HostName 192.168.1.100
  Port 40131
  User user
  IdentityFile ~/.ssh/id_rsa_ubuntu_test
  ServerAliveInterval 30
  ServerAliveCountMax 3' >> ~/.ssh/config

实际效果

  • 以前登录需要输入:ssh -i ~/.ssh/id_rsa_ubuntu_test -p 40131 user@192.168.1.100
  • 现在只需要输入:ssh ubuntu-test
  • 效率提升了不止一倍!

配置说明

  • Host:自定义服务器别名,登录时直接用ssh ubuntu-test
  • IdentityFile:指定密钥文件路径
  • ServerAliveInterval:每隔30秒发送心跳包,防止连接超时
  • ServerAliveCountMax:最多允许3次心跳包失败

我的SSH Config最佳实践

  • 为不同环境分组配置,如Host prod-*Host test-*
  • 为常用服务器设置简短别名,如Host web1Host db1
  • 配置默认选项,如Host *下设置通用的ServerAliveInterval
  • 添加ForwardAgent yes选项,支持密钥代理转发
  • 使用ProxyJump配置跳板机,简化多节点访问

高级配置示例

# 测试环境服务器分组配置
Host test-*
  User user
  IdentityFile ~/.ssh/id_rsa_test
  ServerAliveInterval 30

# 生产环境服务器分组配置  
Host prod-*
  User prod-user
  IdentityFile ~/.ssh/id_rsa_prod
  ServerAliveInterval 60
  ForwardAgent yes

# 跳板机配置
Host jump-server
  HostName 10.0.0.1
  Port 22
  User jump-user
  IdentityFile ~/.ssh/id_rsa_jump

# 通过跳板机访问内部服务器
Host internal-*
  ProxyJump jump-server
  User internal-user
  IdentityFile ~/.ssh/id_rsa_internal

三、测试验证:确保配置生效

配置完成后,一定要进行全面测试,确保每个环节都正常工作。

1. SSH无密码登录测试

# 使用配置文件登录,无需密码和参数
ssh ubuntu-test 'whoami && hostname'

预期输出

user
ubuntu-test-server

2. sudo免密码测试

# 执行需要sudo权限的命令,无需密码
ssh ubuntu-test 'sudo apt update && sudo apt upgrade -y'

测试结果:命令成功执行,没有任何密码提示,完美!

3. 实际应用测试:PostgreSQL操作

我用这台服务器测试PostgreSQL 18,正好验证免密登录的实际效果:

# 安装PostgreSQL 18
ssh ubuntu-test 'sudo apt install -y postgresql-18'

# 查看PostgreSQL版本
ssh ubuntu-test 'sudo -u postgres psql -c "SELECT version();"'

# 创建测试数据库
ssh ubuntu-test 'sudo -u postgres psql -c "CREATE DATABASE test_db;"'

测试结果:所有命令都顺利执行,没有任何密码提示,效率提升明显!

四、AI工具的实际帮助:提高效率的智能助手

这次配置过程中,Trea AI确实帮了我不少忙,让我深刻体会到AI工具在运维工作中的价值:

1. 命令执行与自动化

  • 自动生成复杂命令:比如生成4096位RSA密钥的完整命令
  • 批量执行命令:一次性执行sudo配置、密钥上传和权限设置
  • 命令执行结果实时反馈,方便调试和验证
  • 支持命令模板保存,便于后续复用

2. 问题排查与智能解决方案

  • 当我第一次配置sudo出错时,AI立刻分析了错误信息,提示我直接编辑/etc/sudoers的风险
  • 提供了多种解决方案,包括紧急修复方法和正确的配置步骤
  • 帮我生成了详细的SSH Config配置,包含了最佳实践选项
  • 当密钥认证失败时,AI引导我检查权限设置,帮我快速定位问题

3. 安全提醒与最佳实践

  • 主动提醒我不要直接编辑/etc/sudoers文件,建议使用/etc/sudoers.d/目录
  • 建议我为不同服务器使用不同的密钥,提高安全性
  • 提示我定期更换密钥对,增强系统安全
  • 提供了SSH服务加固的建议,如禁用root登录、限制密码尝试次数

4. 学习与知识扩展

  • 解释了SSH密钥认证的原理,让我加深理解
  • 介绍了不同密钥类型的特点,如RSA、ED25519等
  • 提供了生产环境的安全配置建议,超出了我原本的知识范围

我的真实感受

  • AI工具确实能提高效率,减少重复性工作
  • 但不能完全依赖它,关键还是要理解每个步骤的原理
  • 适合用来辅助执行命令、排查问题和学习新知识
  • 可以作为运维人员的智能助手,让我们有更多时间关注核心业务

AI工具使用技巧

  • 清晰描述问题,提供足够的上下文信息
  • 验证AI生成的命令,尤其是涉及系统配置的命令
  • 结合自己的经验判断AI建议的合理性
  • 利用AI工具学习新技术,扩展自己的知识面

五、安全加固与最佳实践

配置免密登录虽然方便,但安全问题绝不能忽视。作为一名资深运维人员,我深知安全是运维工作的底线。以下是我的一些安全实践:

1. 密钥保护:运维安全的核心

  • 生产环境的密钥一定要设置密码保护:ssh-keygen -p -f ~/.ssh/id_rsa_production
  • 私钥文件权限必须是600:chmod 600 ~/.ssh/id_rsa_*
  • 定期备份密钥到加密的云存储(如Bitwarden、1Password),防止本地设备丢失
  • 从不将私钥文件传输到不安全的设备或网络
  • 重要密钥使用硬件密钥(如YubiKey)存储,提供物理安全保障

2. SSH服务加固:从源头防范风险

  • 禁用root用户直接登录:sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
  • 限制允许登录的用户:sudo sed -i '$a AllowUsers user admin' /etc/ssh/sshd_config
  • 禁用密码登录(配置好密钥后):sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
  • 禁用空密码登录:sudo sed -i 's/PermitEmptyPasswords yes/PermitEmptyPasswords no/' /etc/ssh/sshd_config
  • 限制密钥认证尝试次数:sudo sed -i 's/MaxAuthTries 6/MaxAuthTries 3/' /etc/ssh/sshd_config
  • 使用非默认SSH端口(我通常使用40000-50000之间的端口)
  • 重启SSH服务并验证:sudo systemctl restart sshd && sudo systemctl status sshd

3. 权限精细控制:最小权限原则

  • 不要给用户所有命令的sudo权限,尽量限制命令范围
    # 只允许执行特定命令
    user ALL=(ALL:ALL) NOPASSWD: /usr/bin/apt, /usr/bin/apt-get, /usr/bin/systemctl restart sshd, /usr/bin/systemctl restart postgresql
    
  • 定期检查sudoers配置:sudo visudo -c
  • 启用sudo日志审计:sudo sed -i 's/#Defaults log_input/Defaults log_input/' /etc/sudoers
  • 限制sudo会话时长:sudo sed -i 's/#Defaults timestamp_timeout=15/Defaults timestamp_timeout=5/' /etc/sudoers

4. 网络安全配置:防火墙与访问控制

  • 配置UFW防火墙,只允许特定端口访问:
    sudo ufw allow 40131/tcp
    sudo ufw enable
    
  • 使用fail2ban防止暴力破解:
    sudo apt install -y fail2ban
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    
  • 限制SSH访问IP范围(如果有固定IP):
    sudo ufw allow from 192.168.1.0/24 to any port 40131 proto tcp
    

5. 定期安全检查:防患于未然

  • 每月检查一次SSH登录日志,查看异常登录尝试:
    sudo journalctl -u sshd --since "1 month ago" | grep "Failed password"
    
  • 每季度更换一次密钥对,尤其是生产环境的密钥
  • 服务器重启后验证免密登录是否正常
  • 定期更新系统和SSH软件:sudo apt update && sudo apt upgrade -y
  • 使用安全扫描工具检查SSH配置:ssh-audit 192.168.1.100:40131
  • 定期检查用户账户,移除不再需要的账户

我的安全加固习惯

  • 新服务器搭建完成后,我会立即执行安全加固脚本
  • 配置完成后,使用ssh-audit工具检查SSH安全配置
  • 每月执行一次全面的安全审计,包括日志检查、漏洞扫描等
  • 建立安全事件响应机制,确保在发生安全问题时能快速处理

安全是持续的过程

  • 安全不是一次性的配置,而是持续的过程
  • 要定期关注安全漏洞公告,及时更新系统和软件
  • 不断学习新的安全技术和最佳实践
  • 建立完善的安全管理制度,确保所有运维人员都遵守安全规范

六、常见问题排查:我的真实踩坑记录

在多年的运维工作中,我遇到过各种各样的SSH和sudo问题。以下是一些常见问题的排查方法和我的真实解决案例:

1. SSH密钥认证失败:权限问题是最常见的

可能原因

  • 密钥文件权限不正确(最常见)
  • 公钥没有正确添加到authorized_keys
  • SSH服务配置限制了密钥认证
  • 客户端密钥与服务器公钥不匹配
  • SELinux或AppArmor等安全模块限制

我的真实案例

  • 问题:配置完成后,仍然需要输入密码登录
  • 排查过程:
    1. 执行ssh -v ubuntu-test查看详细认证过程,发现Offering public key: ~/.ssh/id_rsa_ubuntu_test RSA SHA256:...,但服务器返回Authentications that can continue: password
    2. 检查服务器日志:sudo journalctl -u sshd | grep "Authentication refused",发现Authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys
    3. 检查权限:ssh ubuntu-test 'ls -la ~/.ssh/authorized_keys',发现权限是644,不符合SSH要求
    4. 修复权限:ssh ubuntu-test 'chmod 600 ~/.ssh/authorized_keys'
  • 结果:问题解决,成功实现免密登录

排查步骤总结

  1. ssh -v ubuntu-test查看详细认证过程
  2. 检查服务器日志:sudo journalctl -u sshd | grep "Authentication"
  3. 验证密钥指纹:ssh-keygen -l -f ~/.ssh/id_rsa_ubuntu_test
  4. 检查服务器authorized_keys:ssh ubuntu-test 'cat ~/.ssh/authorized_keys'
  5. 检查权限设置:ssh ubuntu-test 'ls -la ~ ~/.ssh ~/.ssh/authorized_keys'
  6. 检查SSH服务配置:ssh ubuntu-test 'sudo grep -i "PubkeyAuthentication" /etc/ssh/sshd_config'

2. sudo免密失效:配置文件和权限是关键

可能原因

  • sudoers配置文件权限不正确
  • 配置文件语法错误
  • 系统安全策略限制
  • sudoers文件被其他规则覆盖

我的真实案例

  • 问题:配置了sudo免密,但执行sudo命令时仍然需要输入密码
  • 排查过程:
    1. 检查sudoers配置语法:ssh ubuntu-test 'sudo visudo -c',结果显示/etc/sudoers: parsed OK
    2. 验证用户权限:ssh ubuntu-test 'sudo -l -U user',发现输出中没有NOPASSWD:标记
    3. 检查sudoers.d目录下的所有配置文件:ssh ubuntu-test 'ls -la /etc/sudoers.d/',发现有一个00-defaults文件
    4. 查看该文件内容:ssh ubuntu-test 'cat /etc/sudoers.d/00-defaults',发现其中有Defaults env_resetDefaults mail_badpass,但没有我的配置
    5. 检查我的配置文件权限:ssh ubuntu-test 'ls -la /etc/sudoers.d/user',发现权限是644,而正确的权限应该是440
    6. 修复权限:ssh ubuntu-test 'sudo chmod 440 /etc/sudoers.d/user'
  • 结果:问题解决,sudo命令不再需要输入密码

排查步骤总结

  1. 检查sudoers配置语法:sudo visudo -c
  2. 验证用户权限:sudo -l -U user
  3. 检查sudo日志:sudo journalctl -t sudo | grep user
  4. 检查sudoers.d目录下所有配置文件:ls -la /etc/sudoers.d/
  5. 检查配置文件权限:ls -la /etc/sudoers.d/user,确保权限是440
  6. 查看sudoers主文件,确认是否包含sudoers.d目录:grep -i "includedir" /etc/sudoers

3. SSH连接超时:网络和配置问题

可能原因

  • 网络连接不稳定
  • SSH服务器配置了较短的超时时间
  • 客户端和服务器之间存在防火墙或代理
  • SSH服务未启动或端口未开放

我的真实案例

  • 问题:SSH连接经常在空闲一段时间后断开
  • 解决方法:
    1. 在SSH Config中添加心跳包配置(如前面所示)
    2. 服务器端配置:sudo sed -i 's/#ClientAliveInterval 0/ClientAliveInterval 60/' /etc/ssh/sshd_config
    3. 重启SSH服务:sudo systemctl restart sshd
  • 结果:连接超时问题解决,长时间空闲也不会断开

4. 公钥添加失败:权限和路径问题

可能原因

  • 目标服务器不存在~/.ssh目录
  • 上传公钥时权限不足
  • 路径错误导致公钥文件找不到

解决方法

  • 确保~/.ssh目录存在:mkdir -p ~/.ssh
  • 使用正确的权限创建文件:cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
  • 配置完成后立即清理临时文件:rm /tmp/id_rsa.pub

我的排查技巧

  • 遇到问题时,先检查最基本的配置:权限、路径、语法
  • 使用详细日志和调试模式帮助排查
  • 配置完成后,立即进行全面测试
  • 养成记录问题和解决方案的习惯,建立个人运维知识库

七、总结与反思:从实践中获得的运维智慧

通过这次实践,我成功配置了Ubuntu服务器的免密登录,包括:

  1. ✅ SSH密钥认证,无需输入密码,大幅提高登录效率
  2. ✅ sudo免密码,执行特权命令更高效,减少重复操作
  3. ✅ SSH Config配置,简化多服务器管理,提高工作效率
  4. ✅ 全面的安全加固,保护系统安全,降低安全风险
  5. ✅ 结合AI工具,提高配置效率,减少人为错误

我的反思与感悟

  • 免密登录确实大大提高了工作效率,尤其适合频繁登录服务器的场景。现在我每天登录服务器的时间减少了80%,有更多时间专注于核心业务
  • 但安全风险也随之增加,必须做好密钥管理和权限控制。安全永远是运维工作的底线,不能为了方便而忽视安全
  • AI工具是很好的辅助,但不能替代对核心原理的理解。只有理解了每个步骤的原理,才能在遇到问题时快速定位和解决
  • 定期的安全检查和更新是必不可少的。安全是一个持续的过程,不是一次性的配置
  • 细节决定成败。SSH配置中,权限设置、语法格式等细节问题都可能导致配置失败
  • 良好的习惯很重要。定期备份、记录问题、总结经验,这些习惯能让运维工作更高效、更可靠

给新手的10条实用建议

  1. 从小规模测试开始,先在测试环境熟练操作,再应用到生产环境
  2. 每一步配置都要验证,确保配置生效后再进行下一步
  3. 养成良好的密钥管理习惯,为不同环境使用不同密钥,定期更换
  4. 严格遵守权限设置要求,SSH对权限要求非常严格,这是安全的基础
  5. 配置SSH Config文件,简化多服务器管理,提高工作效率
  6. 不要直接编辑/etc/sudoers文件,使用/etc/sudoers.d/目录更安全
  7. 定期检查安全配置,包括日志审计、权限检查、软件更新
  8. 学会使用调试工具,如ssh -vjournalctl等,帮助排查问题
  9. 建立个人运维知识库,记录问题和解决方案,方便后续参考
  10. 持续学习安全知识,关注最新的安全漏洞和最佳实践

最后想说的话

技术的本质是提高效率,但安全永远是第一位的。在追求便捷的同时,一定要做好安全防护。SSH免密登录看似简单,但其中包含了很多运维智慧和安全考量。希望我的经验能帮助你少踩坑,更高效、更安全地管理服务器。

作为一名运维人员,我们的工作就是在便捷性和安全性之间找到平衡,为业务提供可靠的基础设施支持。愿你在运维之路上不断成长,成为一名优秀的运维工程师!

参考链接


作者:运维老司机
发布时间:2025-12-18
适用人群:开发人员、运维工程师、服务器管理员
标签:Ubuntu、SSH、免密登录、sudo、服务器管理、AI工具


最后说一句:技术的本质是提高效率,但安全永远是第一位的。在追求便捷的同时,一定要做好安全防护!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐