我注意到 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 权限。
如何启用您自己的用户数据来(进一步)定制云初始化的功能是特定于云供应商的。