行为
memo #5
打开如何使用ssh让ec2链接到oracle
状态:
New
优先级:
Normal
指派给:
-
开始日期:
2026-01-01
计划完成日期:
% 完成:
0%
预期时间:
描述
好,这一步非常关键,而且现在情况已经清晰了很多。
我先给你一句结论,再慢慢拆:
网络、端口、SSH 服务全是 OK 的
现在卡住的只有一件事:
👉 Oracle 这台机器只允许“密钥登录”,不允许密码登录
这是 Oracle Cloud 的默认安全策略,不是你哪里操作错了。
一、你现在这个输出到底说明了什么?¶
Are you sure you want to continue connecting? yes
Warning: Permanently added ...
ubuntu@150.230.102.236: Permission denied (publickey).
逐条翻译成人话:
- ✅ EC2 → Oracle 网络是通的
- ✅ SSH 握手成功(指纹校验完成)
- ❌ 认证阶段失败
- ❌ Oracle 只接受
publickey
👉 所以它根本没给你输密码的机会
二、为什么 Oracle 一定要用 key?¶
Oracle Cloud 的 Ubuntu 镜像,默认是:
PasswordAuthentication noPubkeyAuthentication yesPermitRootLogin no
这是它“安全第一”的设计,不是 Bug。
👉 你必须把 EC2 的 SSH 公钥,放进 Oracle 的 authorized_keys
三、正确、标准、最稳妥的解决方案(强烈推荐)¶
🎯 目标¶
让 EC2(root)
👉 无密码 SSH 登录 Oracle(ubuntu)
四、一步一步来(别跳)¶
Step 1️⃣ 在 EC2 上生成 SSH key(如果没有)¶
在 EC2 上执行:
ls ~/.ssh
如果你看到了:
id_rsaid_rsa.pub
👉 说明已经有了,可以跳到 Step 2
如果没有,就生成一个:
ssh-keygen -t ed25519 -C "ec2-to-oracle"
一路回车即可,不设密码(方便 sshfs)
Step 2️⃣ 把 EC2 的公钥复制出来¶
cat ~/.ssh/id_ed25519.pub
会看到一整行类似:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... ec2-to-oracle
👉 完整复制这一行
Step 3️⃣ 登录 Oracle 服务器(用你原来的方式)¶
你现在肯定还能从你自己电脑 SSH 进 Oracle,对吧?
在 Oracle 上执行:
nano ~/.ssh/authorized_keys
把刚才那一整行 粘进去(单独一行)
然后:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
⚠️ 权限不对,SSH 会直接拒绝(这是个经典坑)
Step 4️⃣ 回到 EC2,再试一次 SSH(关键验证)¶
ssh ubuntu@150.230.102.236
如果你直接看到:
ubuntu@xxx:~$
👉 恭喜,这一关过了
五、这一步成功以后,sshfs 才有意义¶
现在再来:
sshfs ubuntu@150.230.102.236:/data /mnt/remote_disk \
-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3
如果 /data 权限没问题,你会立刻看到文件。
六、顺手帮你把“root 用 sshfs”的坑说清楚¶
你现在是在 EC2 的 root 下操作:
root@ip-172-31-36-76
👉 sshfs 实际用的是 root 的 ~/.ssh
所以你做得对的一点是:
key 一定要放在 /root/.ssh/ 这套里
很多人会犯的错是:
- key 在普通用户
- sshfs 用 root
- 然后死活 publickey denied
你这次没踩这个雷 👍
七、我对你当前状态的判断¶
现在你已经完成了:
- ✅ 网络打通(跨云)
- ✅ SSH 握手
- ❌ 只差 key 信任
👉 这已经是 90% 成功了
八、下一步我可以直接帮你继续做的事¶
你可以直接选,不用解释:
- 🔐 只允许 EC2 这台机器连(更安全)
- 🔄 开机自动 sshfs 挂载(systemd)
- ⚡ sshfs 性能调优
- 🧯 sshfs 挂死 / 网络抖动的应对方案
- 🧠 是否该换成 rsync / nfs / s3 的判断
你先把 key 加好,再试一次 ssh,
如果还有报错,原样贴出来,我直接帮你收尾。
没有任何数据可供显示
行为