有幸使用过甲骨文云的人,都对它的使用体验赞不绝口。
用 Oracle Cloud 的免费账号,可以最多分配4台服务器,
用它们来搭建自用网站,真的非常的酷爽的一件事。
不过我们大多数人都因为的长期使用微软系列、苹果系列、谷歌系列 C 端产品产品和服务,
习惯了「用户名」+ 「密码」的登录方式,
而 Oracle Cloud 偏偏在创建服务器(甲骨文云的官方称呼为“实例”)的时候,
只有(其实是默认) SSH 密钥的登录方式。
好好好!你最行可以了吧?(真是拿人的手短,吃人的嘴软)
问题到了建站的环节,我们还是希望将其改成「root密码登录」的方式更高效,
估计你要问 :What ?竟然创建的时候就有这样的方式,为何早不告诉我 ?
其实在实例创建的时候,并没有一个开关或按钮是可以直接设置为密码登录的,
他是要把【方案二】的那段代码,在创建实例的时候就前置设置好。
那么到底在哪个地方设置呢?
初始化脚本行的设置方法
#!/bin/bash
echo root:密码|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
第二行的密码替换为你要设置的密码,然后正常创建实例。
1.使用默认用户登录,使用您的SSH 客户端,以ubuntu 或opc 用户名加生成或者保存的私钥登录到您的甲骨文实例
切换为root权限
sudo -i
2.因为之前创建实例的时候已经创建了启动cloud-init 脚本命令,所有只需要执行如下命令
echo "PasswordAuthentication yes" > /etc/ssh/sshd_config.d/60-cloudimg-settings.conf
备注:执行这行命令的原因是:
在 /etc/ssh/sshd_config.d/60-cloudimg-settings.conf 文件中有一行:PasswordAuthentication no
这个配置会覆盖主配置文件中的设置。这是甲骨文云镜像的默认安全设置。所以让我们解决这个问题:
修改这个文件,执行
echo "PasswordAuthentication yes" > /etc/ssh/sshd_config.d/60-cloudimg-settings.conf
3.最后执行重启命令即可
reboot
4.等待片刻待实例重启完成后,在FinalShell连接工具里编辑这个实例登陆方式为密码登陆,用户名为root。到此开始以后你登陆就会一直是root权限登陆模式了
1.使用默认用户登录,使用您的SSH 客户端,以ubuntu 或opc 用户名加生成或者保存的私钥登录到您的甲骨文实例
切换为root权限
sudo -i
bash <(curl -sL kejilion.sh)
粘贴并回车后键入y再次回车确认
需要注意,你输入的密码是不会显示出来的,放心输入就行了
通过 SSH 客户端软件 (本次我使用的是 FinalShell ) 使用搭建实例时下载的密钥文件(私钥),远程登录服务器
由默认的「ubuntu 」或「 opc」 用户,切换到「root」用户登录,在 SSH 客户端键入如下命令并回车:
sudo -i
此时, SSH 客户端会显示,此时已切换为「root」用户登录
root@此处为你的实例名称:~# <呈现结果>
设置「root」用户密码,在 SSH 客户端键入如下命令并回车:
sudo passwd
此时,SSH 客户端会显示如下内容,请输入你想要设置的「root」用户的密码并回车:
New password:此处输入你想要设置的密码 <回车> (此处为备注字段 :左侧输入的密码会自动隐身,不用担心,盲打输入即可)
【注意】
此处在键入密码时,屏幕不会有任何反馈,你录入的密码好像隐身一样
不用怀疑,这不是键盘坏了,仅仅是该语言为了保护你的密码安全,自动有这样的防御机制
在第一次盲打密码后,会再次弹出以下界面,同样再次键入同样的密码并回车:
Retype new password:此处再次输入你想要设置的密码 <回车> (此处为备注字段 :左侧输入的密码会自动隐身,不用担心,盲打输入即可)
此时,如果两次输入无误的情况下,屏幕会给你一个反馈,提示设置密码成功.
passwd: password updated successfully <呈现结果>
上面仅仅是给「root」用户新设了密码,但服务器端依然还是默认我们通过ubuntu这个用户来登录,
接下来,我们通过修改 oracle 服务器端该实例下的一个文件,来实现切换默认登陆的用户为「root」
此时,我们继续在 SSH 客户端输入如下命令并回车:
vim /etc/ssh/sshd_config
此时进入vim编辑器中,键入i
进入编辑模式
找到如图红线的两行代码,分别在34行和58行
1 - 将 “ #PermitRootLogin prohibit-password ” 修改为 “ #PermitRootLogin yes ” ,并且释放 “ # ” 注释(就是删除掉#)
代码含义为开启root登录
#PermitRootLogin prohibit-password
改为
PermitRootLogin yes
2 - 将 “ PasswordAuthentication no ” 修改为 “ PasswordAuthentication yes ” 。并且释放 “ # ” 注释(就是删除掉#)
如果像我这样本身就是yes的,就不用动了
代码含义为开启密码验证
#PasswordAuthentication no
改为(但是我打开就是yes不用改了)
#PasswordAuthentication yes
编辑完后,不要忘了点击键盘最左上角的 “ ESC ” 键盘,退出 Vim的命令行模式或插入模式,然后按住Shift+:,此时编辑器最下面就会显示这个:
(是编辑器内显示可不是命令输入框内显示),再:
输入wq,回车就保存并退出vim编辑器了。
至此,通过 Vim 编辑器,修改 “ sshd_config ” 的步骤就操作完毕并保存了。
网上所有的教程到这里就结束了,其实少了下面最重要的一步,导致我用这个方法怎么连接都连不上。
在下面的这个路径中文件名为:60-cloudimg-settings.conf的这个文件就是甲骨文云镜像的默认安全设置文件,如果你不改它,它还是会把Vim编辑器编辑的yes给顶掉
我的SSH工具是FinalShell,所以如图所示文件路径:
/etc/ssh/sshd_config.d
这个文件目前显示开启密码验证依然是 “PasswordAuthentication no”
接下来在SSH命令行中输入如下命令并回车
echo "PasswordAuthentication yes" > /etc/ssh/sshd_config.d/60-cloudimg-settings.conf
然后回到/etc/ssh/sshd_config.d文件检查是否生效如下图
这就算是完成了编辑
1.但这一操作并不代表在该实例端奏效了,需要我们通过以下命令重启该服务器才行:
reboot <回车>
2.等待片刻待实例重启完成后,在FinalShell连接工具里编辑这个实例登陆方式为密码登陆,用户名为root。到此开始以后你登陆就会一直是root权限登陆模式了
这个方法不如前两种方便一般我不用
通过 SSH 客户端软件 (本次我使用的是 FinalShell ) 使用搭建实例时下载的密钥文件(私钥),远程登录服务器
由默认的「ubuntu 」或「 opc」 用户,切换到「root」用户登录,在 SSH 客户端键入如下命令并回车:
sudo -i
此时, SSH 客户端会显示,此时已切换为「root」用户登录
一行一行输入并回车
1.设置root密码:
echo root:密码|sudo chpasswd root
2.开启ROOT登陆:
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config;
3.开启密码验证:
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config;
4.强制覆盖甲骨文云镜像的默认安全设置文件:
echo "PasswordAuthentication yes" > /etc/ssh/sshd_config.d/60-cloudimg-settings.conf
5.重启VPS:
reboot
第六步
一样,重启服务器,修改 SSH 的登录方式等待片刻待实例重启完成后,在FinalShell连接工具里编辑这个实例登陆方式为密码登陆,用户名为root。到此开始以后你登陆就会一直是root权限登陆模式了
学会了前面三种方法,第四种方法也很好理解了。
综合了大家的方法,写出这篇教程。
一是 给自己留个备查簿,方便随时拿来用,
二是 给有需要的朋友,加个关注和收藏,需要用的时候能找得到。
—— 评论区 ——