-
Notifications
You must be signed in to change notification settings - Fork 167
feat(ssh): Add SSH agent forwarding #1332
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
186 commits
Select commit
Hold shift + click to select a range
bc0b2f6
feat: add SSH proxy server support
dcoric 2bcb475
refactor: convert SSH files from JavaScript to TypeScript
dcoric 0b38aee
feat: update SSH server to enhance client handling and logging
dcoric af69d45
Merge branch 'main' into denis-coric/ssh
dcoric 8df000a
fix: enhance SSH server tests and client handling
dcoric 719103a
feat: add findUserBySSHKey function to user database operations
dcoric 2fd1703
refactor: enhance SSH server keepalive functionality and error handling
dcoric 18b52ab
feat: implement SSH key retention feature for Git Proxy
dcoric 91b58eb
feat: add SSH configuration and enhance server command handling
dcoric b2e7557
chore: update .gitignore to exclude Claude directory
dcoric 7e3553c
fix: ensure SSH enabled configuration is a boolean and improve error …
dcoric 2d56a76
Merge remote-tracking branch 'finos/main' into denis-coric/ssh-flow
dcoric 61e6a0b
fix: fixes lint and refreshed package-lock.json
dcoric 27b190b
Merge remote-tracking branch 'finos/main' into denis-coric/ssh-flow
dcoric d39e32e
fix: implement SSH pack data capture for security scanning
dcoric 6192ee9
fix: adds test SSH keys to .gitignore
dcoric 1f94f95
test: enhance SSHServer tests for git-receive-pack handling
dcoric 3150f5d
feat: enhance configuration for SSH and git operations
dcoric 2cc7553
feat: add comprehensive performance tests for HTTP/HTTPS and SSH prot…
dcoric 107bac1
Merge branch 'main' into denis-coric/ssh-flow
dcoric 8698ad1
Merge remote-tracking branch 'finos/main' into denis-coric/ssh-flow
dcoric cd47fb8
refactor: rename variables in performance tests for clarity
dcoric b54952d
Merge branch 'denis-coric/ssh-flow' of https://github.com/G-Research/…
jescalada b8ba792
test: fix flaky ssh performance test
jescalada f238201
chore: fix config/env import
jescalada bf920f8
test: remove unused create-user CLI tests
jescalada 42b2b6e
chore: add constants for file size and replace throughout app
jescalada 95f220c
feat: improve public key validation in /:username/ssh-keys
jescalada 5d2930b
chore: add missing constants to ssh tests
jescalada e9af0aa
chore: remove redundant public key check
jescalada 1ccae5f
fix: add validation for private key file before SSH server init
jescalada 7a6b7a7
chore: improve 401 error messages and normalize GitProxy spelling
jescalada 3962e7d
refactor: simplify captureSSHKey action, improve error handling
jescalada f9e5e9d
feat: enforce SSH key uniqueness to prevent duplicate keys across users
fabiovincenzi d5920a2
fix: ensure proper cleanup of SSH key buffers in captureSSHKey
fabiovincenzi 9518fcb
Merge branches 'denis-coric/ssh-flow' and 'denis-coric/ssh-flow' of h…
jescalada 980c896
chore: adjust failing test asserts
jescalada 2fe2548
chore: simplify SSHKeyManager
jescalada f1b4ddb
refactor: simplify pullRemote and replace sync fs functions with fs.p…
jescalada 631e635
chore: simplify error handling and fix failing tests
jescalada 367ef88
feat: add csrf-token endpoint and CLI utils
jescalada 9302c5d
fix: cli CSRF protection and session cookie management
jescalada 39c0ee7
test: fix failing CLI tests and improve getCliPostRequestConfig/logou…
jescalada 51a4a35
refactor(ssh): add PktLineParser and base function to eliminate code …
fabiovincenzi f6fb9eb
feat(ssh): implement server-side SSH agent forwarding with LazyAgent …
fabiovincenzi 61b3595
feat(ssh): add SSH helper functions for connection setup and validation
fabiovincenzi 3e0e5c0
refactor(ssh): simplify server.ts and pullRemote using helper functions
fabiovincenzi 4a2b273
docs: add SSH proxy architecture documentation
fabiovincenzi 0f3d3b8
fix(ssh): correct ClientWithUser to extend ssh2.Connection instead of…
fabiovincenzi 39be87e
feat: add dependencies for SSH key management
fabiovincenzi dbef641
feat(db): add PublicKeyRecord type for SSH key management
fabiovincenzi 9545ac2
feat(db): implement SSH key management for File database
fabiovincenzi 24d499c
feat(db): implement SSH key management for MongoDB
fabiovincenzi df603ef
feat(db): update database wrapper with correct SSH key types
fabiovincenzi 7e5d6d9
feat(api): add SSH key management endpoints
fabiovincenzi 59aef6e
feat(ui): add SSH service for API calls
fabiovincenzi ebfff2d
feat(ui): add SSH key management UI and clone tabs
fabiovincenzi 0570c4c
feat(cli): update SSH key deletion to use fingerprint
fabiovincenzi e5da79c
chore: add SSH key fingerprint API and UI updates
fabiovincenzi ab0bdbe
refactor(ssh): remove explicit SSH algorithm configuration
fabiovincenzi b72d222
fix(ssh): use existing packet line parser
fabiovincenzi 55d06ab
feat(ssh): improve agent forwarding error message and make it configu…
fabiovincenzi f6281d6
fix(ssh): use startsWith instead of includes for git-receive-pack det…
fabiovincenzi 5e3e13e
feat(ssh): add SSH host key verification to prevent MitM attacks
fabiovincenzi cb99e2c
feat(api): add SSH config endpoint for UI
fabiovincenzi 345d333
refactor(proxy): extract HTTPS clone logic using Strategy pattern
fabiovincenzi 992fdae
feat(ssh): implement SSH agent forwarding for repository cloning
fabiovincenzi 7e652d0
refactor(ssh): extract common SSH command execution logic
fabiovincenzi 8936225
fix(ui): correct SSH URL generation in Code button
fabiovincenzi ae8ef8a
chore: merge upstream main from finos/git-proxy
fabiovincenzi 10b949d
feat(ui): restore SSH key management in UserProfile
fabiovincenzi a128cdd
feat(ui): include SSH agent forwarding flag in clone command
fabiovincenzi 0b53906
refactor(ssh): remove proxyUrl dependency by parsing hostname from pa…
fabiovincenzi 863f0ab
chore: add debug logs
jescalada 042fe47
refactor(ssh): remove SSH Key Retention system
fabiovincenzi 8a7f914
docs(ssh): remove SSH Key Retention documentation
fabiovincenzi 4eb234b
fix(config): remove obsolete ssh.clone.serviceToken
fabiovincenzi 092f994
docs(config): improve SSH schema descriptions
fabiovincenzi 095d2a2
docs(readme): clarify SSH agent forwarding
fabiovincenzi 649625e
refactor(ssh): remove TODO in server initialization
fabiovincenzi c7f1f75
improve(ssh): enhance agent forwarding error message
fabiovincenzi 222ba86
feat(ssh): add auto-generated host key management
fabiovincenzi 77aeeba
improve(ssh): add detailed GitHub auth error messages
fabiovincenzi 7b0ba90
fix(deps): add missing ssh2 dependency
fabiovincenzi c07d5cd
test(ssh): update tests for agent forwarding
fabiovincenzi c10047e
fix(deps): correct exports conditions order for Vite 7
fabiovincenzi a656040
docs: remove duplicate SSH.md documentation
fabiovincenzi 5114b93
docs: optimize and improve SSH_ARCHITECTURE.md
fabiovincenzi 9fff6b7
docs: fix obsolete SSH information in ARCHITECTURE.md
fabiovincenzi 7bf20b6
fix(ssh): include ssh-agent startup in error message
fabiovincenzi a4df01c
Merge upstream/main: integrate latest changes and fix singleBranch
fabiovincenzi 7062809
docs: fix processor chain count in README (17 -> 16)
fabiovincenzi 2df3916
fix(config): remove personal test repositories from config
fabiovincenzi db4044a
refactor(config): remove obsolete getProxyUrl and getSSHProxyUrl func…
fabiovincenzi 06f5052
refactor(ssh): remove unnecessary type cast for findUserBySSHKey
fabiovincenzi 731ed35
refactor(routes): remove duplicate JavaScript route files
fabiovincenzi 1b73bb3
security: remove SSH private keys from repository
fabiovincenzi bfed68a
build: add @types/ssh2 to fix TypeScript compilation errors
fabiovincenzi 7662e6a
security: fix CodeQL command injection and URL sanitization issues
fabiovincenzi 4230bc5
refactor(test): convert remaining test files from JavaScript to TypeS…
fabiovincenzi 0ff683e
fix(ssh): comprehensive security enhancements and validation improvem…
fabiovincenzi e3e60da
Update src/proxy/ssh/AgentForwarding.ts
fabiovincenzi 3ad0105
fix(ssh): remove password auth and add error for missing SSH identities
fabiovincenzi 4cf238e
chore: merge changes
fabiovincenzi 0d2e4e1
docs(ssh): emphasize .git requirement in repository URLs
fabiovincenzi 07f15ef
Update src/proxy/ssh/server.ts
fabiovincenzi 62c93e2
Merge branch 'ssh-agent-on-pr987' of https://github.com/fabiovincenzi…
fabiovincenzi 5ccd921
fix(ssh): use default dual-stack binding for IPv4/IPv6 support
fabiovincenzi 67c1016
fix(ssh): use default dual-stack binding for IPv4/IPv6 support
fabiovincenzi c1d92b5
Merge branch 'ssh-agent-on-pr987' of https://github.com/fabiovincenzi…
fabiovincenzi a648e84
test: fix User constructor calls and SSH agent forwarding mock
fabiovincenzi acc66d0
fix: correct SSH fingerprint verification and refactor pullRemote tests
fabiovincenzi bb17668
test: increase memory leak threshold for flaky performance test
fabiovincenzi 5fed1de
refactor(cli): make ssh-key testable - export functions and add main(…
fabiovincenzi 7fd6c48
test(api): add SSH key management endpoints tests
fabiovincenzi 272a1c7
test(db): add SSH key database operations tests
fabiovincenzi 0dfcc75
test(ssh): expand sshHelpers coverage
fabiovincenzi d9606ae
test(cli): add ssh-key CLI tests
fabiovincenzi aa42962
test: add gitprotocol tests
fabiovincenzi 5223dc5
test: add tests for ssh agent implementation
fabiovincenzi 27314f8
refactor(ssh): extract SSH helpers and expand pullRemote tests
fabiovincenzi 29647a0
test(ssh): add host key verification tests
fabiovincenzi 239f7a2
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi 3fe3545
refactor: remove import meta
fabiovincenzi ed4c2a6
Merge branch 'ssh-agent-on-pr987' of https://github.com/fabiovincenzi…
fabiovincenzi 5de929d
test: add test for server.ts
fabiovincenzi c2cd33e
ci: allow LicenseRef-scancode-dco-1.1 license in dependency review
fabiovincenzi 8bb5282
docs: reorganize SSH documentation for better user experience
fabiovincenzi b2973db
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi 0b0a020
fix(ui): migrate ssh service from deprecated apiBase to apiConfig
fabiovincenzi ae77132
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi 74d2bc9
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi daf5646
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi 74c109e
refactor: make Proxy.stop() await all server shutdowns in parallel
fabiovincenzi aee9788
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi ad24af3
fix(ssh): use authenticated user identity from transport layer in par…
fabiovincenzi a56700f
Merge remote-tracking branch 'upstream/main' into ssh-agent-on-pr987
fabiovincenzi be7759a
fix(pullRemote): restore concurrent request check and directory clean…
fabiovincenzi c4f36b7
fix(ssh): add proper TypeScript types to SSH key route params
fabiovincenzi 79b6f7c
fix(ssh): use path.join in test assertions for cross-platform path co…
fabiovincenzi 363e3e1
chore: merge upstream main
fabiovincenzi f3b9e4e
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi 2ee4f68
chore: merge upstream main
fabiovincenzi c3bd14e
Merge branch 'ssh-agent-on-pr987' of https://github.com/fabiovincenzi…
fabiovincenzi 5e2d0a9
fix: do not overwrite publicKeys on updateUser
fabiovincenzi 53a3f3a
Merge remote-tracking branch 'upstream/main' into ssh-agent-on-pr987
fabiovincenzi 6056c34
fix(security): validate req.body is a Buffer before parsing pkt-lines
fabiovincenzi fac846d
fix(security): add typeof/isArray guards to satisfy CodeQL type-confu…
fabiovincenzi 2452a1e
fix(security): prevent shell injection in ssh-keyscan host verification
fabiovincenzi ccf8b63
refactor(ssh): centralize ssh2 internal API access with version guards
fabiovincenzi d9fffe3
chore: run format
fabiovincenzi b6610d3
fix(ssh): gate verbose SSH debug logging behind ssh.debug config flag
fabiovincenzi c2d645a
docs(ssh): remove redundant admin UI prereq from SSH setup guide
fabiovincenzi bfd580a
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi b6d7141
fix(tests): mock db module to prevent process.exit in auth route tests
fabiovincenzi 863fb2e
Merge branch 'ssh-agent-on-pr987' of https://github.com/fabiovincenzi…
fabiovincenzi 666209c
Merge upstream/main into ssh-agent-on-pr987
fabiovincenzi da03c8b
fix: increase memory threshold in performance test
fabiovincenzi 05ae725
fix: use subarray instead of deprecated slice and remove unused param
fabiovincenzi cccd778
fix: lazy-load ssh2 in users route to avoid native module crash on Wi…
fabiovincenzi 71b1e86
style: fix prettier formatting in users route
fabiovincenzi 581469c
docs: fix broken ssh links and add mermaid dependency
fabiovincenzi 6c887e1
fix: use Node.js crypto for SSH test key generation instead of ssh-ke…
fabiovincenzi 9a2298c
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi eee8ed8
Merge remote-tracking branch 'upstream/main' into ssh-agent-on-pr987
fabiovincenzi 222994f
Merge branch 'main' into ssh-agent-on-pr987
fabiovincenzi fcdbec6
ci: add contents:read permission for private repo checkout
fabiovincenzi d04bd6e
Revert "ci: add contents:read permission for private repo checkout"
fabiovincenzi abc6218
fix: race condition bug on concurrent SSH connections
jescalada aecbbb3
fix(test): mock execFileSync in pullRemote test to fix Windows CI
fabiovincenzi f22cc43
Merge branch 'ssh-agent-on-pr987' of https://github.com/fabiovincenzi…
fabiovincenzi 7430c9b
fix: no-op push handling in SSH
jescalada cdf3401
Merge branch 'ssh-agent-on-pr987' of https://github.com/fabiovincenzi…
jescalada 767bbc2
chore: improve error message for unreferenced commits
jescalada add4487
Merge branch 'main' into ssh-agent-on-pr987
jescalada cb9c53f
fix: update checkHiddenCommit test error messages
jescalada 0531110
docs: remove root ARCHITECTURE.md in favor of website/docs/architectu…
fabiovincenzi cf762a7
chore: remove .nvmrc
fabiovincenzi 525b75c
fix(config): restore QuickType validation
fabiovincenzi 5d592a2
docs: replace GitHub references with upstream
fabiovincenzi e988806
docs: replace GitHub references with upstream
fabiovincenzi 61e90df
refactor: remove dead sshUser field from Action
fabiovincenzi 52ec262
Merge branch 'ssh-agent-on-pr987' of https://github.com/fabiovincenzi…
fabiovincenzi 7121a0c
refactor: move known host fingerprints from hardcoded constants to pr…
fabiovincenzi 5a4b142
docs: integrate SSH setup guide into user manual and sidebar
fabiovincenzi f018369
Merge upstream/main into ssh-agent-on-pr987
fabiovincenzi File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.