From 72973b0fc01f0adb7b4dadddd7e85496898e6fb5 Mon Sep 17 00:00:00 2001 From: GrĂ©goire DuchĂȘne Date: Sun, 6 Sep 2020 10:31:27 +0100 Subject: zsh: Add op-ssh-add function op-ssh-add is a small wrapper around ssh-add that retrieves the SSH private key password from 1Password before passing it to ssh-add. --- zsh/functions/op-ssh-add | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 zsh/functions/op-ssh-add (limited to 'zsh/functions/op-ssh-add') diff --git a/zsh/functions/op-ssh-add b/zsh/functions/op-ssh-add new file mode 100644 index 0000000..d64efd9 --- /dev/null +++ b/zsh/functions/op-ssh-add @@ -0,0 +1,28 @@ +# -*- mode: sh -*- + +if [[ ${@[1]} =~ '-[DdKLlTXx]' ]]; then + $(which -p ssh-add) $@ + return $? +fi + +local prv pub +for prv (${@[-1]} ~/.ssh/id_{ecdsa,ed25519}{,_sk}); do + if [[ -f ${prv}.pub ]]; then + pub=${prv}.pub + break + fi +done + +if [[ -z ${pub} ]]; then + $(which -p ssh-add) $@ + return $? +fi + +zmodload zsh/zpty +zpty ssh $(which -p ssh-add) $@ +zpty -w ssh $(op get item \ + $(cut -d' ' -f3 ${pub}) \ + --fields password \ + --session $(op signin --raw)) +zpty -r ssh +zpty -d ssh -- cgit v1.2.3-70-g09d2