前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Mac 自动加载sshkey

Mac 自动加载sshkey

作者头像
chuchur
发布2024-11-21 18:32:05
发布2024-11-21 18:32:05
9200
代码可运行
举报
文章被收录于专栏:禅境花园禅境花园
运行总次数:0
代码可运行

在 Zsh 中自动运行 ssh-add 以便在登录时自动添加 SSH 密钥,可以在 ~/.zshrc 文件中添加相关配置。下面是一个示例,展示如何在 Zsh 会话启动时自动运行 ssh-add 并添加所有默认位置的 SSH 密钥。

步骤:

  1. 编辑 ~/.zshrc 文件

打开 ~/.zshrc 文件:

代码语言:javascript
代码运行次数:0
复制
vi ~/.zshrc
  1. 添加以下内容到 ~/.zshrc
代码语言:javascript
代码运行次数:0
复制
# ~/.zshrc

# 自动运行 ssh-agent 并添加 SSH 密钥
function start_ssh_agent {
    if [ -z "$SSH_AUTH_SOCK" ]; then
        echo "Starting ssh-agent..."
        eval $(ssh-agent -s)
        ssh-add ~/.ssh/my_rsa
    else
        echo "ssh-agent already running."
    fi
}

# 在 zsh 启动时调用 start_ssh_agent
start_ssh_agent

这段脚本会在 Zsh 启动时检查 SSH_AUTH_SOCK 变量是否为空,如果为空则启动 ssh-agent 并运行 ssh-add 来添加所有默认位置的 SSH 密钥。

  1. 重新加载 ~/.zshrc 文件
代码语言:javascript
代码运行次数:0
复制
source ~/.zshrc

检查 SSH_AUTH_SOCK 是为了避免在已经运行的 ssh-agent 会话中启动新的 ssh-agent 实例。SSH_AUTH_SOCK 是环境变量,它存储了 ssh-agent 创建的 UNIX 域套接字的路径。如果该变量已经存在,说明 ssh-agent 已经在运行,并且可以直接使用。

以下是详细的解释和更新后的脚本:

原理

  1. 检查 $SSH_AUTH_SOCK
  2. 如果 $SSH_AUTH_SOCK 为空,说明当前会话没有运行 ssh-agent
  3. 如果 $SSH_AUTH_SOCK 不为空,说明 ssh-agent 已经运行,可以直接使用。
  4. 启动 ssh-agent
  5. $SSH_AUTH_SOCK 为空时,启动新的 ssh-agent 实例,并设置环境变量。
  6. 运行 ssh-add
  7. 使用 ssh-add 添加 SSH 密钥到 ssh-agent

解释

  • if [ -z "
  • eval $(ssh-agent -s):启动 ssh-agent 并将其环境变量导出到当前 shell 会话。
  • ssh-add:添加默认位置的 SSH 密钥。
  • echo "ssh-agent already running.":如果 ssh-agent 已经在运行,则提示用户。

通过这种方式,你可以确保在每次启动 Zsh 会话时,只有在没有运行 ssh-agent 的情况下才会启动新的 ssh-agent 实例,并添加 SSH 密钥。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤:
  • 原理
  • 解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档