Conversation
|
💬 Discussion in Slack: #pr-review-cli-377-feat-pam-default-ssh-access-to-interactive-shell Posted by Review Police — reviews, comments, new commits, and CI failures will stream into this channel. |
|
| Filename | Overview |
|---|---|
| packages/cmd/pam.go | Adds explicit SSH proxy and remote-command syntax, validates conflicting modes, and passes structured access options into the PAM layer. |
| packages/pam/local/access.go | Routes SSH sessions among direct shell, remote command, and proxy modes, but direct-session cleanup depends on RunSSHShell returning. |
| packages/pam/local/ssh-shell.go | Implements the direct SSH client and terminal lifecycle; signal handling starts too late to clean up a session interrupted during connection establishment. |
| packages/pam/local/ssh-shell-resize.go | Adds SIGWINCH-based terminal resize propagation on non-Windows platforms. |
| packages/pam/local/ssh-shell-resize_windows.go | Adds polling-based terminal resize propagation on Windows. |
| packages/pam/local/ssh-shell_test.go | Covers command execution, exit codes, gateway traversal, and interactive terminal restoration, but not interruption during connection establishment. |
| e2e/pam/ssh_test.go | Updates proxy coverage for the explicit flag and adds direct-command end-to-end coverage. |
Reviews (1): Last reviewed commit: "feat(pam): default ssh access to interac..." | Re-trigger Greptile
The PAM session exists server-side from creation, but signal handling was only armed after the relay, gateway and SSH handshake completed. Ctrl+C during connection setup exited before NotifySessionTermination ran and left the session live until expiry. Arm the watch before the gateway capability check and the dial. When a signal arrives before the client attaches, end the session and exit 128+signum; signals are restored to default first so a second one is not swallowed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Description 📣
Makes the SSH access CLI command default to an interactive shell, like web access. Before it would default to just starting a proxy.
Type ✨