From 2e1c14a81ecb5c1c32f66c73f9cfb976807eb13a Mon Sep 17 00:00:00 2001 From: Cat Tom Date: Wed, 24 Jul 2024 23:52:19 +0800 Subject: [PATCH] add tech --- docs/index.md | 2 - ...eys-for-Authentication-on-Linux-Servers.md | 89 +++++++++++++++++++ docs/tech/index.md | 3 + mkdocs.yml | 1 + 4 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 docs/tech/Creating-and-Managing-SSH-Keys-for-Authentication-on-Linux-Servers.md create mode 100644 docs/tech/index.md diff --git a/docs/index.md b/docs/index.md index e8088a5..f66433f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,8 +5,6 @@ hide: # 首页 -> 记录生活,积累技术。 - Hello 👋 , 我是 Cat Tom ## 兴趣 & 爱好 diff --git a/docs/tech/Creating-and-Managing-SSH-Keys-for-Authentication-on-Linux-Servers.md b/docs/tech/Creating-and-Managing-SSH-Keys-for-Authentication-on-Linux-Servers.md new file mode 100644 index 0000000..1b4171d --- /dev/null +++ b/docs/tech/Creating-and-Managing-SSH-Keys-for-Authentication-on-Linux-Servers.md @@ -0,0 +1,89 @@ +# 创建和管理 Linux 服务器用于身份验证的 SSH 密钥 + +## 使用 ssh-keygen 生成密钥 +以下 ssh-keygen 命令默认在 ~/.ssh 目录中生成 4096 位 SSH RSA 公钥和私钥文件。 如果当前位置存在 SSH 密钥对,这些文件将被覆盖。 + +```bash +ssh-keygen \ + -m PEM \ + -t rsa \ + -b 4096 \ + -C "azureuser@myserver" \ + -f ~/.ssh/mykeys/myprivatekey \ + -N mypassphrase +``` + +### 命令解释 + +`ssh-keygen` = 用于创建密钥的程序 + +`-m PEM` = 将密钥的格式设为 PEM + +`-t rsa` = 要创建的密钥类型,本例中为 RSA 格式 + +`-b 4096` = 密钥的位数,本例中为 4096 + +`-C "azureuser@myserver"` = 追加到公钥文件末尾以便于识别的注释。 通常以电子邮件地址用作注释,但也可以使用任何最适合你事物。 + +`-f ~/.ssh/mykeys/myprivatekey` = 私钥文件的文件名(如果选择不使用默认名称)。 追加了 .pub 的相应公钥文件在相同目录中生成。 该目录必须存在。 + +`-N mypassphrase` = 用于访问私钥文件的其他密码。 + +## 使用 ssh-agent 来存储私钥密码 +为了避免在每次 SSH 登录时键入私钥文件密码,可以使用 `ssh-agent` 来缓存私钥文件密码。 如果使用 Mac,macOS Keychain 在用户调用 `ssh-agent` 时会安全存储私钥密码。验证并使用 `ssh-agent` 和 `ssh-add` 将密钥文件的情况通知给 SSH 系统,这样就无需交互使用密码。 + +```bash +eval "$(ssh-agent -s)" +``` + +现在,使用命令 `ssh-add` 将私钥添加到 `ssh-agent`。 + +```bash +ssh-add ~/.ssh/id_rsa +``` + +私钥密码现在存储在 `ssh-agent` 中。 + +## 使用 ssh-copy-id 将密钥复制到现有服务器 +如果已有服务器,可以使用 `ssh-copy-id`将新的 SSH 公钥添加到 Linux 服务器。 + +```bash +ssh-copy-id -i ~/.ssh/id_rsa.pub azureuser@myserver +``` + +## 创建并配置 SSH 配置文件 +可创建并配置 SSH 配置文件 (`~/.ssh/config`),以便加速登录和优化 SSH 客户端行为。 + +以下示例显示一个简单配置,通过此配置,你可以使用默认的 SSH 私钥以用户身份快速登录到特定 VM。 + +创建文件。 + +```Bash +touch ~/.ssh/config +``` + +编辑文件以添加新的 SSH 配置 + +```Bash +nano ~/.ssh/config +``` + +添加适用于主机 VM 的配置设置。 在此示例中,VM 名称(主机)为 myvm,帐户名称(用户)为 azureuser,IP 地址或 FQDN(主机名)为 192.168.0.255。 + +```Bash +# Azure Keys +Host myvm + Hostname 192.168.0.255 + User azureuser +# ./Azure Keys +``` + +可为其他主机添加配置,让每台主机使用其自己的专用密钥对。 查看 SSH 配置文件获取更多高级配置选项。 + +获得 SSH 密钥对和配置的 SSH 配置文件后,便可快速安全地远程访问 Linux VM。 运行以下命令时,SSH 从 SSH 配置文件的 Host myvm 块中找到所有设置并加载它们。 + +```Bash +ssh myvm +``` + +首次使用 SSH 密钥登录到服务器时,命令会提示用户输入该密钥文件的密码。 \ No newline at end of file diff --git a/docs/tech/index.md b/docs/tech/index.md new file mode 100644 index 0000000..9c981d0 --- /dev/null +++ b/docs/tech/index.md @@ -0,0 +1,3 @@ +# 技术 +> 路漫漫其修远兮,吾将上下而求索。 +> ——《离骚》 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index cdf8bb1..d3b4d57 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -75,6 +75,7 @@ nav: - 随想随写: - blog/index.md - 标签: blog/tags.md + - 技术: tech/index.md - "MkDocs 参考": examples/index.md plugins: