我想创建一个 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
根据美国国家安全局的五项安全指南(出于学习原因,我将其全部包括在内):
- 尽可能加密传输的数据。
- 最大限度地减少软件以最大限度地减少漏洞。
- 在不同的系统上运行不同的网络服务。
- 配置安全工具以提高系统健壮性。
- 使用最小权限原则。
粗体适用于原始帖子。
创建 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