mirror of
https://github.com/community-scripts/ProxmoxVE-Local.git
synced 2026-03-31 06:23:54 -04:00
[PR #97] [MERGED] feat: Add SSH key authentication and custom port support #181
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/community-scripts/ProxmoxVE-Local/pull/97
Author: @michelroegl-brunner
Created: 10/10/2025
Status: ✅ Merged
Merged: 10/10/2025
Merged by: @michelroegl-brunner
Base:
main← Head:feat/ssh-key-authentication📝 Commits (2)
1285cdafeat: Add SSH key authentication and custom port supportd19bfb7fix: Resolve TypeScript build errors and improve type safety📊 Changes
9 files changed (+984 additions, -141 deletions)
View changed files
➕
src/app/_components/SSHKeyInput.tsx(+191 -0)📝
src/app/_components/ServerForm.tsx(+130 -11)📝
src/app/api/servers/[id]/route.ts(+52 -4)📝
src/app/api/servers/route.ts(+52 -4)📝
src/server/database.js(+55 -8)📝
src/server/ssh-execution-service.js(+313 -84)📝
src/server/ssh-service.js(+180 -27)📝
src/types/server.ts(+10 -2)📝
update.sh(+1 -1)📄 Description
Overview
This PR adds comprehensive SSH key authentication support and custom SSH port configuration to the PVE Scripts Local application.
Features Added
🔐 SSH Key Authentication
🔌 Custom SSH Port Support
Technical Implementation
Database Schema Updates
auth_typecolumn:password|key|bothssh_keycolumn: Stores private key contentssh_key_passphrasecolumn: Optional encrypted passphrasessh_portcolumn: Custom SSH port (default: 22)Backend Services
Frontend Components
API Routes
Security Considerations
✅ Implemented Security Measures:
Testing
Breaking Changes
None - this is fully backward compatible. Existing servers will continue to work with password authentication.
Migration
Existing servers automatically migrate to use
auth_type=passwordandssh_port=22with no user intervention required.Ready for review and testing! 🚀
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.