2022年8月26日星期五

Oracle cloud VM实例vps配置ssh+密码登录

Oracle cloud VM实例没有用户预设 ssh 密钥功能,而且配置 ssh 登录过程还非常的麻烦的,不过好在甲骨文提供了启动脚本 (cloud-init),即在创建 mv 实例第一次开机时执行启动脚本。

有了这个功能,我们就可以在首次开机配置 ssh 相关设置。
注意,Oracle管这叫 cloud-init,谷歌 GCP管这叫自动化,vultr 管这叫 Startup Script。各家的命名不一样,但是功能都是相同的,即开机启动脚本。

基本原理

原理就是在新实例开机的时候执行脚本,自动修改目录下 /etc/ssh/sshd_config 的这个 ssh 配置文件,修改 PermitRootLogin 和 PasswordAuthentication 参数,并且顺便修改 root 密码。

cloud-init 脚本内容

cloud-init 开机脚本在高级选项这一栏中。


debian / ubuntu

精准查找,适合 debian 与 ubuntu 系统。

其中 123456789 是你需要设置的 root 密码。

#!/bin/bash
echo root
:123456789 |sudo chpasswd root
sudo sed
-i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config;
sudo sed
-i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config;
sudo service sshd restart

centos 

精准查找,适合 centos 系统。

其中 123456789 是你需要设置的 root 密码。

#!/bin/bash
echo root
:123456789 |sudo chpasswd root
sudo sed
-i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config;
sudo sed
-i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config;
sudo service sshd restart

通用脚本 (模糊查找)

模糊查找,理论上适合大部分 Linux 操作系统。

其中 123456789 是你需要设置的 root 密码。

#!/bin/bash
echo root
:123456789 |sudo chpasswd root
sudo sed
-i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config;
sudo sed
-i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config;
sudo service sshd restart
首次登录方法:

使用PuTTY登录,
下载后无需安装,直接打开 PuTTY 工具,
在连接>SSH>认证>认证私钥文件  处选择保存的私钥文件路径,
打开会话,填入登录主机和端口,
输入脚本中设置的用户信息即可登录成功
root      123456789

如果未使用cloud-init 开机脚本,登录时输入实例默认用户名(如:ubuntu)即可登录成功


引导卷镜像备份和镜像恢复

甲骨文实例不提供系统重置功能,由于资源限制,ARM 实例可能删除后就开不出来,如果折腾坏了就需要救砖,可以一开始就自己备份一个包用于救砖。

以下是操作方法:

这里要用到免费的 AMD 实例,每个账户有 2 个免费 AMD 实例份额,这时候就体现出它的价值了。 首先从原Arm实例分离引导卷,将分离的引导卷挂载到另外一个AMD实例,挂载的时候不要选 iscsi,选择半虚拟化,不需要输命令。

然后在AMD实例中 dd 保存已挂载的Arm实例引导卷的镜像,因为整个盘镜像实际大小 47G,dd 时需要进行压缩。这里使用 gz 压缩,根据原系统系统不同,dd 备份的大小不一样。 ubuntu 20.04 arm 最后得到的包大约大小是 631M。oracle linux 8 arm 最后得到的包大约大小是 1.28G。

备份命令是

dd if=/dev/sdb | gzip > /root/ubuntu.img.gz

备份需要一定的时间。 这个备份镜像的恢复命令是

gzip -dc /root/ubuntu.img.gz | dd of=/dev/sdb

查看进度命令 开另外一个 ssh 窗口,每五秒输出一次进度信息

watch -5 pkill -USR1 ^dd$

镜像的恢复时间需要一个小时以上。 等待完成后,卸载掉这个引导卷,挂载回原实例,开机即可恢复。

磁盘附加到原机是在原实例操作 计算>实例>实例详细信息>引导卷>附加引导卷

如果一开始自己没有制作 dd 包备份,需要提供一个备份的 dd 镜像,供救砖使用。

http://app.isos.cc/ubuntu.img.gz 链接为oracle ubuntu 20.04 (非 mini)Arm 版Arm实例引导卷的备份镜像。

首先在其他实例上挂载好需要救砖的引导卷。 使用 wget 命令下载这个包。

cd /root && wget http://app.isos.cc/ubuntu.img.gz

使用 dd 命令恢复

gzip -dc /root/ubuntu.img.gz | dd of=/dev/sdb

整个恢复过程需要 1-2 个小时的时间。 等待完成后,卸载掉这个恢复好的引导卷,挂载回原实例,开机即可。 恢复后的系统账号是 root 密码是 putaosi.com 登录后需要第一时间修改密码