AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1516262
Accepted
Angelo
Angelo
Asked: 2024-06-03 02:56:11 +0800 CST2024-06-03 02:56:11 +0800 CST 2024-06-03 02:56:11 +0800 CST

为什么要创建“50-cloud-init.conf”?

  • 772

我正在设置一个 ubuntu 服务器,像 99% 的人一样,我做的第一件事就是禁用密码身份验证,转而使用密钥。

在其他发行版和其他时间,这只需编辑/etc/ssh/sshd_conf并确保......

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePam no

正如您可能已经知道的那样,仅仅这样做不再有效,因为在开始附近,该sshd_conf文件包含另一个conf文件......

Include /etc/ssh/sshd_config.d/*.conf

包含的文件是一个名为的文件,50-cloud-init.conf其安装时的唯一内容恰好是...

PasswordAuthentication yes

包含的 Conf 文件会sshd_conf.d 覆盖原始文件sshd_conf,因此如果只是更改sshd_conf,50-cloud-init.conf则会翻转回密码身份验证设置。将其更改为“否”将最终禁用密码登录。

我已经这样做了两次,但每次都忘记了。我现在会记得,但这让我烦恼,因为我无法理解这些东西的基本原理是什么。

到目前为止,通过四处搜寻,我们在“为什么”方面取得了很多成果。大多数人都很乐意克服这个小障碍并继续前进。我很高兴它可以解决,但我有疑问:

  • 这个额外的conf文件的名称表明它与基于云的安装有关。但什么云呢?我把它安装在物理机上。大概是cloud-init为我创造了这个,但为什么呢?我没有在云环境中运行。另外,“50”是什么? 50什么?此外,它唯一具有启用密码身份验证的行。在云安装中,不是每个人都总是使用密钥吗?

  • 我发现可以只删除非云安装的 cloud-init。这样做有什么注意事项吗?即使在非云安装上,默认情况下也会安装并运行它,这似乎很奇怪。一定有原因吧?

password
  • 1 1 个回答
  • 61 Views

1 个回答

  • Voted
  1. Best Answer
    muru
    2024-06-03T18:48:43+08:002024-06-03T18:48:43+08:00

    如果您超越“ cloud-init ”中的“云”,它可能会帮助您更快地理解事情:它是一个用于声明性配置系统的工具,通常用于各种类型的首次设置(例如,作为桌面安装程序的一部分,或云环境中的虚拟实例,或其他没有安装程序的地方,例如 Raspberry Pi 映像)。是的,它最初是为云环境创建的,但后来它的范围和功能有了很大的发展。特别是,Ubuntu 桌面安装程序使用它来进行各种初始配置活动,正如您在此处看到的那样。从代码重用的角度来看,这很有意义:当存在专用的、维护良好的、广泛使用的工具时,桌面安装程序没有特别的理由去重新发明轮子来完成这些事情。

    至于您看到的额外文件,其原因主要与我在回答sysctl 被分成这么多配置文件的原因中描述的相同。 :

    当您只需添加或删除包含您想要的确切内容的文件时,以事务方式修改配置是最简单的,而不是使用正则表达式或其他任何东西来修改充满谁知道什么的配置文件中间的一行。这就是为什么允许插入配置文件的目录比单个配置文件更可取的原因。

    通常,支持此类插入式配置文件的软件按字典顺序从一个目录或一组目录中读取文件。为了使字典顺序更容易理解,长期以来存在使用零填充两位数前缀(00-foo.conf、50-whatever.sh等)的约定,因为这些前缀在数字和字典顺序上排序相同。如果您有一个NN-whatever包含某些要覆盖的设置的文件,您有两个选择:

    1. 只需用您想要的任何内容覆盖该文件即可。如果相关文件具有或可能具有您不希望覆盖且不希望跟踪的其他设置,则您可能希望避免使用此选项。

    2. 创建一个文件MM-whatever,其中MM:

      • 小于NN软件优先考虑设置的第一次出现的情况(例如00极端情况),或者,
      • 大于NN如果它优先考虑设置的最后出现(例如,99在极端情况下)。

    对于两位数前缀,极端是00,99,50就在中间。因此管理员很容易覆盖它。在您的特定情况下,只需创建一个包含以下内容的文件/etc/ssh/sshd_config.d/00-only-pubkey-auth.conf:

    PasswordAuthentication no
    ChallengeResponseAuthentication no
    UsePam no
    

    而且您不必担心主配置文件或其他嵌入式文件。


    这个特殊的变化甚至不是 Ubuntu 或 cloud-init 所特有的。当 sshd 首次开始支持嵌入式配置文件时,Arch Linux 也立即转而使用嵌入式文件(当然,名称不同)来更改上游默认值。我也立即制作了另一个替代文件来覆盖这些设置。在此之前,我必须编辑主配置文件本身,每次更新包中的配置文件时,包管理系统都会要求我检查更改。这些天来,我已经有一段时间没有被这个特定的配置更改所困扰了,从长远来看,这让我的生活变得更轻松。

    • 2

相关问题

  • 在登录屏幕上自动选择用户

  • 如何轻松加密文件?

  • 通过 SSH 禁用密码访问?

  • 如何更改确定有效用户密码的规则?[关闭]

  • 用户如何避免在启动时输入密码?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve