Oracle Cloud 做了什么,以便我可以在 SSH 会话中无需密码即可使用 sudo?

Oracle Cloud 做了什么,以便我可以在 SSH 会话中无需密码即可使用 sudo?

我注意到 Oracle Cloud 的预生成密钥对无需密码即可登录 Linux 服务器,并且无需密码即可使用 sudo。我无法在我所知的其他地方重现这种情况。

Oracle Cloud 与其他版本的区别在于,它还在 OOBE 中生成了一个用户ubuntu(对于 Ubuntu。而对于 Oracle Linux,默认用户是opc。无论我使用哪个发行版,opc都会生成一个用户)。似乎 Oracle Cloud 服务器root默认不使用用户。所以我意识到有一个Oracle Cloud Agent已安装的、与 sudo 用户一起工作的opc。该软件是否处理了 sudo 授权?(但我检查了/etc/pam.d其他一些地方,这些文件仍然是原始文件。)

其他网站告诉我要设置一个 pam 模块libpam-ssh-agent-auth,但这是一个过时的项目,多年来没有更新。我在许多服务器上尝试过,但不起作用。(尽管许多发行版没有从包管理器中删除这个 pam 模块)

如果有人能告诉我如何实现这一点我将不胜感激。

答案1

须藤

要允许 sudo 组(或同等组)的用户,可以更改 sudo 配置。将其添加到/etc/sudoers (以 root 身份使用 visudo)

%sudo ALL=(ALL) NOPASSWD: ALL

请注意,用户需要成为 sudo 组的成员。

或者只是某个特定用户:

username_here       ALL = (ALL) NOPASSWD: ALL

SSH 密钥

为了能够以无需密码的用户身份登录,您需要将公共 SSH 密钥添加到您想要登录的帐户。

正确的方法是使用 ssh-copy-id

ssh-copy-id [email protected]

这会将您的公钥添加到指定用户的主文件夹中.ssh/授权密钥

您也可以手动复制。只需将此文件(您的本地计算机)的输出复制到.ssh/授权密钥用户的文件(在服务器上):

cat ~/.ssh/id_rsa.pub

答案2

通常云镜像运行cloudinit 当它们启动时,初始化并定制唯一实例的通用图像。

Cloudnit 可以并且通常确实执行通用任务,但通常还配置为与特定云提供商元数据服务交互以加载供应商和/或用户数据。该机制通常是在实例中提供您上传到云提供商的个人公共 ssh 密钥,并允许您使用相关私钥登录。

Cloud init 可以做很多事情,包括部署用户、为新部署的用户设置 ssh 密钥和/或密码以及 sudo 权限。

如何启用您自己的用户数据来(进一步)定制云初始化的功能是特定于云供应商的。

相关内容