Files
herolib/lib/osal/sshagent/readme.md
Mahmoud-Emad 32e7a6df4f refactor: Harden and improve SSH agent module
- Add extensive security validations for SSH agent
- Implement robust `ssh-agent` auto-start script
- Enhance `sshagent` operations with improved error handling
- Revamp `sshagent` test suite for comprehensive coverage
- Update `sshagent` README with detailed documentation
2025-08-25 16:32:20 +03:00

1.4 KiB

SSH Agent Module

SSH agent management library for V language. Provides secure key handling, agent lifecycle control, and remote integration.

Features

  • Manage SSH keys (generate, load, import)
  • Single agent per user with auto-cleanup
  • Start/stop/reset agent easily
  • Diagnostics and status checks
  • Push keys to remote nodes & verify access
  • Security-first (file permissions, socket handling)

Platform Support

  • Linux, macOS
  • Windows (not yet supported)

Quick Start

import freeflowuniverse.herolib.osal.sshagent

mut agent := sshagent.new()!
mut key := agent.generate('my_key', '')!
key.load()!
println(agent)

Usage

Agent

mut agent := sshagent.new()!
mut agent := sshagent.new(homepath: '/custom/ssh/path')!
mut agent := sshagent.new_single()!

Keys

mut key := agent.generate('my_key', '')!
agent.add('imported_key', privkey)!
key.load()!
if agent.exists(name: 'my_key') { println('Key exists') }
agent.forget('my_key')!

Agent Ops

println(agent.diagnostics())
println(agent.keys_loaded()!)
agent.reset()!

Remote

import freeflowuniverse.herolib.builder

mut node := builder.node_new(ipaddr: 'user@remote:22')!
agent.push_key_to_node(mut node, 'my_key')!

Security

  • Private keys set to 0600
  • Secure sockets & user isolation
  • Validated inputs & safe memory handling

Examples

See examples/osal/sshagent/ for demos.

Testing

v test lib/osal/sshagent/