SSH OP
by @moodykong
Use the ssh-op helper script to load an SSH private key from 1Password (op) into an in-memory ssh-agent and then run ssh. Use when connecting to hosts that r...
clawhub install ssh-opπ About This Skill
name: ssh-op description: Use the ssh-op helper script to load an SSH private key from 1Password (op) into an in-memory ssh-agent and then run ssh. Use when connecting to hosts that require the 1Password-managed key, troubleshooting ssh-op, or onboarding a new machine by configuring the 1Password vault/item and adding SSH host aliases to ~/.ssh/config.
ssh-op
ssh-op is a wrapper around ssh that:
ssh-agent exists for the current shellop read ... | ssh-add -execs ssh with your argumentsPrerequisites
Fail-fast checks you can run:
command -v op ssh ssh-agent ssh-add
op whoami
If op whoami fails:
OP_SERVICE_ACCOUNT_TOKEN is set.Configuration (portable)
Machine-specific config lives alongside the skill:
~/.openclaw/skills/ssh-op/config.env.example~/.openclaw/skills/ssh-op/config.envRequired keys:
SSH_OP_VAULT_NAME β 1Password vault containing the keySSH_OP_ITEM_TITLE β 1Password item titleOptional keys:
SSH_OP_KEY_FIELD β defaults to private keySSH_OP_KEY_FINGERPRINT_SHA256 β if set, skip re-loading when already in ssh-agentSSH_OP_HOSTS_FILE β defaults to hosts.conf (ssh config snippet filename)SSH host entries (optional) live in:
~/.openclaw/skills/ssh-op/hosts.confInitialization / installation / onboarding
Preferred (chat-first)
Because the primary interface is chat (Telegram), the preferred onboarding flow is:
1. Ask Boss the required questions in chat.
2. Write the real config file: config.env.
3. Run a smoke test (e.g. ssh-op --help and a safe ssh-op -T ).
Optional (terminal)
If you are running in a real terminal, you can use the interactive onboarding script:
~/.openclaw/skills/ssh-op/scripts/onboard.sh
(If you want a step-by-step runbook, see references/onboarding.md.)
1) Put the executable on PATH
Canonical executable lives inside the skill:
~/.openclaw/skills/ssh-op/scripts/ssh-opFor convenience, create a symlink:
mkdir -p ~/.local/bin
ln -sf ~/.openclaw/skills/ssh-op/scripts/ssh-op ~/.local/bin/ssh-op
2) Configure which key to load
Run onboarding to populate the real config:
~/.openclaw/skills/ssh-op/scripts/onboard.sh
(Or edit config.env manually and set SSH_OP_VAULT_NAME / SSH_OP_ITEM_TITLE.)
Then validate:
ssh-op --help
try a safe ssh command (or any host alias you have configured)
ssh-op -T
3) (Optional) Manage ~/.ssh/config host aliases
1. Put desired Host entries in hosts.conf
2. Apply them idempotently (adds/updates a managed block):
~/.openclaw/skills/ssh-op/scripts/ensure_ssh_config.py
This will update ~/.ssh/config between:
# BEGIN ssh-op (managed)# END ssh-op (managed)Usage
ssh-op
Examples:
ssh-op my-host-alias
ssh-op -T my-host-alias
ssh-op -L 8080:localhost:8080 my-host-alias
Notes / behavior
ssh-agent lifetime is tied to the current shell unless you export SSH_AUTH_SOCK / SSH_AGENT_PID.Executables / bin placement
scripts/ssh-op).~/.local/bin/ssh-op) for convenience.π‘ Examples
ssh-op
Examples:
ssh-op my-host-alias
ssh-op -T my-host-alias
ssh-op -L 8080:localhost:8080 my-host-alias
βοΈ Configuration
Fail-fast checks you can run:
command -v op ssh ssh-agent ssh-add
op whoami
If op whoami fails:
OP_SERVICE_ACCOUNT_TOKEN is set.