【authorized_keys配置及常见问题】

news/2025/2/14 4:02:53/

说明

authorized_keys 文件用于存储允许通过 SSH 访问特定用户帐户的公钥。当用户尝试通过 SSH 连接到服务器时,服务器会使用此文件中的公钥验证用户的身份。如果公钥匹配,用户将被允许访问。这有助于提高安全性,因为公钥认证比使用密码更安全。

authorized_keys 文件通常位于用户的主目录下的 .ssh 子目录中,例如 /home/username/.ssh/authorized_keys。它的作用范围仅限于其所属的用户帐户。这意味着,只有具有相应私钥的用户才能通过 SSH 访问服务器。

在某些情况下,你可能会在其他目录(如 /root/.ssh/)找到 authorized_keys 文件。这通常是因为这些目录属于特定的用户或系统管理员,他们需要允许其他用户或服务访问。

是的,你可以在任何地方创建 authorized_keys 文件,但是为了保持良好的组织和安全实践,建议将其放在用户的 .ssh 目录中。如果你在其他目录创建 authorized_keys 文件,你需要确保 SSH 配置文件(通常是 /etc/ssh/sshd_config)中的 AuthorizedKeysFile 指令指向了正确的文件路径。

以下是一个简单的示例,说明如何在用户的 .ssh 目录中创建 authorized_keys 文件:

  1. 首先,确保你已经创建了用户的 .ssh 目录。如果没有,可以使用以下命令创建:

    mkdir -p /home/username/.ssh
    chmod 700 /home/username/.ssh
    chown username:username /home/username/.ssh
    
  2. 在用户的 .ssh 目录中创建 authorized_keys 文件:

    touch /home/username/.ssh/authorized_keys
    chmod 600 /home/username/.ssh/authorized_keys
    chown username:username /home/username/.ssh/authorized_keys
    
  3. 将用户的公钥添加到 authorized_keys 文件中:

    echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD... username@example.com" >> /home/username/.ssh/authorized_keys
    

    请注意,将公钥粘贴到文件中时,确保不要删除或更改任何空格。现在,具有相应私钥的用户应该能够通过 SSH 访问服务器。

authorized_keys文件是SSH(安全外壳协议)中用于公钥认证的一部分。它的主要作用是存储允许通过公钥认证登录到SSH服务器的用户的公钥。当用户尝试通过公钥认证登录时,SSH服务器会检查authorized_keys文件,以确认提供的公钥是否存在于文件中。如果匹配成功,用户将被允许登录。

作用域:authorized_keys文件通常位于用户主目录的.ssh子目录中(例如/home/username/.ssh/authorized_keys)。这意味着每个用户都可以有自己的authorized_keys文件,用于存储允许登录到其账户的公钥。这个文件的作用域仅限于该特定用户。

为什么好多目录都有这个文件:在某些情况下,可能需要在其他目录中创建authorized_keys文件。例如,当使用特定于目录的访问控制时,或者当在系统中使用了非标准的用户主目录配置时。然而,在大多数情况下,这个文件应该位于用户的.ssh目录中。

自己也能随便创建吗:是的,你可以在任何目录中创建authorized_keys文件,但是需要确保SSH服务器配置正确,以便能够找到并使用这个文件。通常,建议将其放在用户主目录的.ssh子目录中,以遵循标准实践。

为什么/data/目录下也能创建:在某些情况下,可能需要在非标准位置(如/data/目录)存储authorized_keys文件。这可能是因为特定的系统配置、权限要求或其他原因。然而,在这种情况下,需要确保SSH服务器配置正确,以便能够找到并使用这个文件。

标准实例:

  1. 用户alice想要通过公钥认证登录到SSH服务器。首先,她需要在自己的计算机上生成一对SSH密钥(公钥和私钥)。
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa
  1. 然后,她需要将生成的公钥(id_rsa.pub)复制到服务器上的authorized_keys文件中。这通常位于她的主目录的.ssh子目录中(例如/home/alice/.ssh/authorized_keys)。
ssh-copy-id -i ~/.ssh/id_rsa.pub alice@remote-server
  1. 现在,当alice尝试通过SSH登录到服务器时,服务器将检查authorized_keys文件中是否存在她提供的公钥。如果匹配成功,她将被允许登录。

非标准实例:

  1. 假设我们有一个名为myapp的应用程序,它需要使用SSH访问另一个服务器。我们希望将authorized_keys文件存储在一个特定的目录中,例如/data/myapp/ssh/

  2. 首先,我们需要为myapp生成一对SSH密钥(公钥和私钥)。

ssh-keygen -t rsa -b 2048 -f /data/myapp/ssh/id_rsa
  1. 然后,我们需要将生成的公钥(id_rsa.pub)复制到目标服务器上的authorized_keys文件中。在这个例子中,我们将文件放在/data/myapp/ssh/authorized_keys

  2. 接下来,我们需要更新SSH服务器的配置,以便它能够找到并使用这个非标准位置的authorized_keys文件。在/etc/ssh/sshd_config文件中,我们需要添加或修改以下行:

AuthorizedKeysFile /data/myapp/ssh/authorized_keys
  1. 最后,我们需要重启SSH服务器以应用更改:
sudo systemctl restart sshd

现在,当myapp尝试通过SSH访问目标服务器时,服务器将检查/data/myapp/ssh/authorized_keys文件中是否存在提供的公钥。如果匹配成功,myapp将被允许登录。


http://www.ppmy.cn/news/1290431.html

相关文章

golang学习专栏

GOLANG专栏 Golang基础教程 Golang基础教程 Golang练手算法 Golang练手算法 Golang设计模式 Golang设计模式 Golang数据结构和算法 Golang数据结构和算法 Golang并发编程 Golang并发编程 ORM框架Gorm Golang ORM框架gorm Golang源码分析 Golang源码分析 MySQL教程 MySQ…

基于华为ENSP模拟器-vlan划分网络

需求 不连外网的内网。需求隔离故障和隔离广播风暴,并要保证网络的连通。 解决方案使用三层交互机,设置vlan用于隔离网络,并在三层交互机为网关保证各个vlan之间的通讯。 实现 使用三层交互机,设置vlan用于隔离网络&#xff0…

线性代数_对称矩阵

对称矩阵是线性代数中一种非常重要的矩阵结构,它具有许多独特的性质和应用。下面是对称矩阵的详细描述: ### 定义 对称矩阵,即对称方阵,是指一个n阶方阵A,其转置矩阵等于其本身,即A^T A。这意味着方阵A中的…

uniapp-H5项目的坑

先推荐个插件库-非常好用:https://ext.dcloud.net.cn/ 一、uniapp h5 适配pc端 1、问题:屏幕尺寸在400px~960px之间页面排版错乱 2、解决方法:在page.json文件中 "globalStyle": {"navigationStyle": "custom&quo…

船舶数据采集与分析在线能源监测解决方案

一、船舶在线能源监测应用前景 船舶在线能源监测在能源效率优化、故障诊断和预测维护、节能减排和环保监管、数据分析和决策支持以及自动化智能化等方面具有广阔的应用前景。随着船舶行业对能源管理和环保要求的不断提高,船舶在线能源监测技术将成为船舶运营和管理中…

TypeScrip快速入门

文章目录 TypeScrip基础语法变量的声明复合类型 条件控制if-elseswitch for&while循环常规遍历数组 函数基础样式箭头函数可选参数 面向对象枚举、接口继承 模块开发导出导入 TypeScrip TypeScript是微软开发的开源编程语言,在JavaScript的基础上拓展了一些语法…

面向对象编程(高级)

面向对象编程(高级) 1、类变量和类方法 (1) 概念 类变量,也称为静态变量,是指在类级别声明的变量。它们与特定类相关联,而不是与类的实例(对象)相关联。每个类变量只有…

git是什么,git入门常用基本命令

文章目录 git是什么1 .git init--初始化2.git status--检测当前文件夹下面文件状态3. git add--要管理的文件4.git add . --管理当前文件夹下的所有文件5.git commit -m--生成第一个版本6.git log--查看版本的记录 git是什么 分布式,版本控制,软件 版本…