以 root 或用户身份创建 ssh 密钥有什么区别吗?

以 root 或用户身份创建 ssh 密钥有什么区别吗?

我想创建一个 ssh 密钥,我想知道以 root 身份创建密钥和以用户身份创建密钥时有什么区别吗?就像作为用户我这样做:

ssh-keygen -t rsa -C "[email protected]"

/home/user/.ssh/ 当我sudo su像以前一样使用相同的用户然后创建我的 ssh 密钥时,它会将其保存在vs 中,因此它会将密钥保存在/root/.ssh

哪种方式才是创建 ssh 密钥的正确方式?以 root 身份?还是以用户身份?谢谢

答案1

除了结果密钥的存储位置(以及文件所有权和密钥注释)之外,没有任何区别。

请注意,您可能应该避免使用 root 帐户来执行并不严格需要超级用户权限的操作,因此很少需要为 root 创建 SSH 密钥。

一般来说:作为将使用密钥的用户创建密钥。

另外,关于sudo su,请参阅“是否有充分的理由运行 sudo su?

答案2

根据美国国家安全局的五项安全指南(出于学习原因,我将其全部包括在内):

  1. 尽可能加密传输的数据
  2. 最大限度地减少软件以最大限度地减少漏洞
  3. 在不同的系统上运行不同的网络服务
  4. 配置安全工具以提高系统健壮性
  5. 使用最小权限原则

粗体适用于原始帖子。

创建 SSH 密钥时,会生成一对

  • 公钥,以 .pub 结尾。公钥驻留在服务器中。
  • 私钥是一个秘密,加密私钥的决定取决于私钥泄露、丢失或被盗时可能造成的损失有多大。

谁生成了密钥或私钥位于何处并不重要。只要获取到privateKey,对应的publicKey就包含在服务器端的authorized_keys文件中。作为 root,尝试通过普通用户 privateKey 进行身份验证:

~# ssh root@server -o PreferredAuthentications=publickey -i /home/user/.ssh/server_key

另外,值得一提的是,您应该始终使用 ssh-keys 并从配置文件中禁用密码身份验证/etc/ssh/sshd_config

~$ sudo cat /etc/ssh/sshd_config | grep PasswordAuthentication
#PasswordAuthentication yes
PasswordAuthentication no

&

$ sudo cat /etc/ssh/sshd_config | grep Pub
PubkeyAuthentication yes

相关内容