markusplayz__ Asked: 2024-02-12 01:29:14 +0800 CST2024-02-12 01:29:14 +0800 CST 2024-02-12 01:29:14 +0800 CST Web 后端中的安全凭证 772 我正在寻找一种安全的方法来在 Web 服务器(在我的例子中是Node.js )的后端保存凭据(例如 SSH 凭据)。 我已经考虑过散列,但是每次都必须输入密码,并且不需要再次输入密码它应该可以工作。 database 1 个回答 Voted Best Answer Kiki odazie 2024-02-12T03:28:03+08:002024-02-12T03:28:03+08:00 SSH 对于 SSH 凭据,我建议您设置无密码 SSH。 在服务器上,您/应用程序将使用 SSH 访问目标服务器 步骤1:生成密钥对 $ ssh-keygen -t rsa # press enter on all prompts 上述命令将在用户的主目录 /root/.ssh/ 下生成 SSH RSA 私钥和公钥。私钥 id_rsa 必须安全地保存在节点上。应将公钥 id_rsa.pub 复制到想要无密码访问的目标服务器。 步骤2:将SSH公钥复制到目标服务器 $ ssh-copy-id -i ~/.ssh/id_rsa <ip_address_of_the_target_server> 该命令ssh-copy-id将简单地从源服务器复制公钥并将其添加到目标服务器的授权密钥列表中,默认为经过~/.ssh/autohorized_keys身份验证的 SSH 用户。如果禁用密码验证,则需要手动复制。在应用程序节点上,复制位于 ~/.ssh/id_rsa.pub 的 SSH 公钥内容并将其粘贴到目标的 ~/.ssh/authorized_keys 中。 有关无密码 SSH 的更多信息,请查看本文: https: //www.strongdm.com/blog/ssh-passwordless-login 其他证书 对于其他凭证,更安全的方法是使用 环境变量:使用类似的库dotenv在运行时安全地加载它们。 安全凭证管理服务:AWS Secrets Manager、Azure Key Vault 或 Google Cloud Secret Manager 等专用服务。 基于会话的令牌:使用临时会话令牌进行身份验证,而不是存储原始凭据。 我希望这一切有所帮助。
SSH
对于 SSH 凭据,我建议您设置无密码 SSH。
在服务器上,您/应用程序将使用 SSH 访问目标服务器
步骤1:生成密钥对
$ ssh-keygen -t rsa # press enter on all prompts
上述命令将在用户的主目录 /root/.ssh/ 下生成 SSH RSA 私钥和公钥。私钥 id_rsa 必须安全地保存在节点上。应将公钥 id_rsa.pub 复制到想要无密码访问的目标服务器。
步骤2:将SSH公钥复制到目标服务器
$ ssh-copy-id -i ~/.ssh/id_rsa <ip_address_of_the_target_server>
该命令
ssh-copy-id
将简单地从源服务器复制公钥并将其添加到目标服务器的授权密钥列表中,默认为经过~/.ssh/autohorized_keys
身份验证的 SSH 用户。如果禁用密码验证,则需要手动复制。在应用程序节点上,复制位于 ~/.ssh/id_rsa.pub 的 SSH 公钥内容并将其粘贴到目标的 ~/.ssh/authorized_keys 中。有关无密码 SSH 的更多信息,请查看本文: https: //www.strongdm.com/blog/ssh-passwordless-login
其他证书
对于其他凭证,更安全的方法是使用
环境变量:使用类似的库
dotenv
在运行时安全地加载它们。安全凭证管理服务:AWS Secrets Manager、Azure Key Vault 或 Google Cloud Secret Manager 等专用服务。
基于会话的令牌:使用临时会话令牌进行身份验证,而不是存储原始凭据。
我希望这一切有所帮助。