summaryrefslogtreecommitdiff
path: root/internal/ssh/client
AgeCommit message (Collapse)Author
2026-04-10Fix known-hosts trust deadlock, host key stat, and optional nozstd buildPaul Buetow
- stdout logger: release mutex while waiting on pause resume so prompt callbacks can log (fixes hang after trusting new hosts; known_hosts was written but Resume never ran). - known hosts callback: stop borrowing the SSH dial throttle channel (could block or interact badly with parallel handshakes). - host key path: use errors.Is(..., fs.ErrNotExist) for RootedPath.Stat wrapped errors; stat errors now fail fast instead of mis-read. - public key path: same ErrNotExist check for authorized_keys miss. - Build: optional DTAIL_NO_ZSTD=yes / nozstd tag for CGO-free builds; split zstd readers into tagged files. - Docs/examples: firewalld note for port 2222, log prune timer+script, SSHBindAddress note, dserver unit disabled-by-default comment; firewalld helper script example. - Regression test for stdout pause/mutex behavior. Made-with: Cursor
2026-03-19task 259: harden known_hosts updates with OpenRootPaul Buetow
2026-03-08task: replace panic path in known hosts trust flow (task 373)Paul Buetow
2026-03-05more on thisPaul Buetow
2026-03-05Improve lint/vet reliability and refactor client runtime/bootstrapPaul Buetow
2026-03-03Stabilize integration-mode auth tests and concurrent dcat readsPaul Buetow
2026-03-03Add auth-key fast reconnect integration coveragePaul Buetow
2026-03-03feat(ssh-client): collect auth methods in fallback orderPaul Buetow
2026-02-03Add SSH agent key selection and fix MapReduce outfile handlingPaul Buetow
This commit adds two major features and fixes: 1. SSH Agent Key Selection: - Add --agentKeyIndex flag to select specific SSH agent key (0-based) - Solves "too many authentication failures" with multiple SSH keys - Default -1 uses all keys (backwards compatible) - Available in dtail, dcat, dgrep, dmap commands 2. MapReduce Outfile Fixes: - CSV files now written at every interval, not just on exit - Proper signal handling (SIGTERM/SIGINT) with graceful shutdown - 5-second grace period for cleanup before force exit - Fixes issue where outfile remained as .tmp during execution Usage: dtail --servers host --agentKeyIndex 0 --query '...' outfile results.csv This is particularly useful with YubiKey/hardware tokens where many keys are loaded in the SSH agent, and for monitoring MapReduce results in real-time as they're computed. Co-authored-by: Cursor <cursoragent@cursor.com>
2026-01-29refactor: improve Go best practices compliancePaul Buetow
- Add explicit interface satisfaction checks (var _ Interface = (*Type)(nil)) for compile-time verification: - TurboWriter implementations (DirectTurboWriter, TurboChannelWriter) - Processor implementations (GrepLineProcessor, ChannellessLineProcessor) - Parser implementations (genericParser, csvParser, genericKVParser, custom parsers, mimecastParser) - Logger implementations (file, stdout) - Handler implementations (ServerHandler, ClientHandler) - Connector implementations (Serverless, ServerConnection) - SSH callback implementations (KnownHostsCallback) - Improve error handling with context wrapping (%w): - SSH operations: GeneratePrivateRSAKey, Agent - Query parsing: Query.parse - SSH client connections: dial, session, handle methods - Fix receiver consistency: - Convert Query.String() from value to pointer receiver - Convert Outfile.String() from value to pointer receiver - Convert all KnownHostsCallback methods to pointer receivers - Convert mapCommand.Start() to pointer receiver - Reorganize file structure for better clarity: - internal/io/dlog/dlog.go: Move type definition before public functions - internal/mapr/token.go: Reorganize helper functions after public ones - Add documentation comments: - Query.String() method - Outfile.String() method - Regex.String() method - Improve config variable documentation All unit tests and integration tests pass. Amp-Thread-ID: https://ampcode.com/threads/T-019c0b08-0eeb-705d-a1f7-31bb764b659a Co-authored-by: Amp <amp@ampcode.com>
2024-03-29lint warningsPaul Buetow
2021-12-04Fix code smell - as reported by SonarQubePaul Buetow
2021-10-29explicitly use dlog.Server for server packages and dlog.Clent for client ↵Paul Buetow
packages for logging
2021-10-29mergePaul Buetow
2021-10-29Dont use relaxed SSH Auth mode anymore for integration testsPaul Buetow
2021-10-27integration tests use separate ssh private key filePaul Buetow
2021-10-24Fix DCat color test.Paul Buetow
2021-10-21merge developPaul Buetow
2021-10-21backport ECDSA key support form masterPaul Buetow
2021-10-19Can configure DTail client not to mess with ~/.ssh/known_hosts via env var - ↵Paul Buetow
this is useful for running unit and integration tests in jenkins
2021-10-10vetting and linting and some code restylingPaul Buetow
2021-10-02move args to config packagePaul Buetow
logger package rewrite as dlog
2021-03-16Support ECDSA SSH keyPhilip Foulkes
2020-05-20can specify a private ssh key via command line, no password support yet thoughPaul Buetow
2020-05-13refactorPaul Buetow
2020-02-11more on scheduled jobs and ssh callbacksPaul Bütow
2020-02-10initial scheduled jobsPaul Bütow
2020-02-08move prompt to io/Paul Bütow
2020-02-07Introduce drun command, refactor code to use context packagePaul Bütow
2020-01-21Move commands to cmd/ and move internal dependencies to internal/Paul Bütow