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
相关产品推荐
相关产品推荐

