rekey 759 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. USER="${USER:-$(whoami)}"
  4. HOST="${HOST:-$(hostname)}"
  5. DATE="$(date +%F)"
  6. SSH_DIR="$HOME/.ssh"
  7. mkdir -p "$SSH_DIR"
  8. PASS_PATH="personal/ssh/$USER@$HOST/$DATE"
  9. # --- Temporary RAM-backed file for private key ---
  10. TMP_PRIV="/dev/shm/sshkey_$USER@$HOST$DATE"
  11. trap 'rm -f "$TMP_PRIV"' EXIT
  12. # Generate Ed25519 key pair into RAM
  13. ssh-keygen -t ed25519 -f "$TMP_PRIV" -N "" -q
  14. # Insert private key into pass
  15. cat "$TMP_PRIV" | pass insert --multiline --force "$PASS_PATH"
  16. echo "Private key stored in pass at $PASS_PATH"
  17. # Extract public key from the same temp file
  18. ssh-keygen -y -f "$TMP_PRIV" > "$SSH_DIR/$USER@$HOST.pub"
  19. echo "Public key written to $SSH_DIR/$USER@$HOST.pub"
  20. # Private key removed from /dev/shm automatically