You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zsh脚本中SSH密码短语的处理方法咨询(Obsidian自动备份)

处理Obsidian备份脚本的SSH密码短语问题

一、让脚本完全静默运行(无需手动输入)

1. 利用系统密钥环自动管理密码短语

这是最安全的方式,第一次输入密码后系统会自动记住,后续无需重复操作:

  • macOS:编辑~/.ssh/config,添加以下内容:
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/你的密钥文件名

修改后脚本可以简化成:

git add --all
git commit -am "backup"
git push

SSH会自动从系统钥匙串读取密钥,不需要手动启动ssh-agent和添加密钥。

  • Linux:如果用GNOME/KDE桌面,系统自带的密钥环会自动接管ssh-agent,第一次输入密码时选择「记住密码」,后续脚本就能自动运行。

2. 创建无密码SSH密钥(简单但需注意安全)

如果不想依赖密钥环,可以生成一个不带密码短语的密钥专门用于备份:

ssh-keygen -t ed25519 -f ~/.ssh/obsidian_backup -N ""

把生成的obsidian_backup.pub公钥添加到Git远程仓库的SSH密钥列表中,然后修改脚本:

git add --all
git commit -am "backup"
git -c core.sshCommand="ssh -i ~/.ssh/obsidian_backup" push

⚠️ 注意:无密码密钥一旦泄露会被直接滥用,务必设置文件权限为chmod 600 ~/.ssh/obsidian_backup,确保只有你能读取。

二、通过弹窗询问密码短语

如果既不想用无密码密钥,也不想依赖密钥环,想每次备份时弹窗输入密码:

macOS版本脚本

eval "$(ssh-agent -s)"
# 弹出系统对话框输入密码
PASSWORD=$(osascript -e 'display dialog "请输入SSH密钥密码短语:" default answer "" with hidden answer' -e 'text returned of result')
echo "$PASSWORD" | ssh-add -q ~/.ssh/你的密钥文件名

git add --all
git commit -am "backup"
git push

Linux版本脚本(以zenity为例,需先安装zenity)

eval "$(ssh-agent -s)"
# 弹出GTK风格密码对话框
PASSWORD=$(zenity --password --title="Obsidian备份验证")
echo "$PASSWORD" | ssh-add -q ~/.ssh/你的密钥文件名

git add --all
git commit -am "backup"
git push

内容的提问来源于stack exchange,提问作者spectrophobia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:42:09