Repository navigation
Add SSH Switch v0.2.3 - #1127
nicholasyoannou wants to merge 3 commits into
Conversation
Issues FoundNo issues with your PR description were found. Next Steps
Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️ |
|
"Connect from computer" lists only IPv4 addresses (main.py:152). The mount scripts reject IPv6 addresses (mount-unix.sh:14, mount-windows.ps1:19), so the helpers fail on an IPv6-only network. Other than this, LGTM, tested on SteamOS Beta Channel |
d9bedf6 to
3eb2888
Compare
3eb2888 to
dae904e
Compare
|
@spmzt Thanks for your comment, appreciate the feedback. I've added IPv6 support to the "Connect from computer" popup displayed, and compatibility in the scripts for IPv6 also. It will only show the IPv6/IPv4 based on if it's enabled. SteamOS seemingly silently switched IPv6 back on by default for some (see ValveSoftware/SteamOS#2024) but oddly I've tested it on my own Steam Deck and the IPv6 loopback is disabled when it's already connected via IPv4 (SteamOS dual-stack network problem). Personal router supports IPv4 and IPv6 but oddly IPv6 is disabled on my Deck. I've tested this with your IPv6 enabler plugin #1130 and can verify IPv6 connectivity works as intended. I've left some feedback on your referenced PR also. Have tested #1128. I've also added a quick QOL update for the connectivity scripts to change the default |
|
Tested again on my Steamdeck, LGTM. P.S. Not related to this PR, but could you please use |
|
Glad it's all working good. For OS-compatibility sake since Windows (not WSL) uses |
|
This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy. |
|
PR is not stale. The plugin has undergone testing and can confirm there are no outlying problems. Awaiting someone with privileges to review and approve |
|
This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy. |
|
Not stale |
Plugin Testing ReportInstalled Plugins
Specifications
IssuesHas the following major blocking issue(s): 0 SummaryTested by installing from the repo release, exercising the UI (SSH on/off, startup toggle, password change flow, connection info dialog), and running the macOS mount helper from a computer. I also reviewed the backend, frontend and mount scripts in depth. Honestly, this is some of the highest-quality plugin code I've read in this ecosystem — nothing blocking, only one minor. Major Blocking IssuesNone. Minor Non-Blocking Issues
Tester NoteAs the maintainer of another plugin (Time Changer), I want to call out the security engineering here, because it sets the bar for the category: the two-phase password verification with a single-use, TTL-bound token and a shadow-hash guard against TOCTOU; passwords only ever traveling over stdin; hashing before |
|
Tested on an AYN Odin 2 Portal (ARM64, SteamOS ARM port, Decky Loader). Installed from commit 69e0d3b.
LGTM. |
|
@nicholasyoannou please elaborate on the usage of GPT. What was it used for specifically? |
|
Hi @Tormak9970, GPT Astra was used to help build from the initial templating from the Decky templates, draft and revise parts of the Python backend, Decky frontend, tests and companion scripts, investigate errors from testing, and review changes for potential issues. During development of the plugin have done multiple security audits incl. the password-changing feature, which did initially allow password changes without verification of the old one (which would've been a security disaster) before submission to the Decky Plugin DB, so was changed before pushing it across. I've done security audits on the SSH Switch codebase using Daybreak Blue and Mythos 5.1, both have returned cleanly. It was also used to help aid understanding of MonroeWorld's scripts which have been referenced across the Steam Deck subreddit various times for ease of mounting SD drive to PC for familiarity. I dabbled between Opus, GPT, and spmzt's in-development IPv6 Control plugin while testing for IPv6 implementation which was added shortly after (due to Windows interpreting IPv6 addresses differently via ipv6-literal). Happy to clarify if you need clarity on certain aspects. |
We have a no majority AI policy, is the majority of your codebase written by yourself? Also, as a side note, we can't review code like this: https://github.com/nicholasyoannou/decky-ssh-switch/blob/main/scripts/verify-package.mjs. That needs to be cleaned up |
|
@Tormak9970 Yes, has been written by myself, with modifications with AI. Have understood the code and logic, with various aspects added from elsewhere (MonroeWorld, with research and testing for Windows mDNS and other enhancements to scripts). Am happy to take on further feedback if certain aspects need to be changed. As for cleanup, I've removed |
|
Works great. |
Add SSH Switch to Plugin Store
SSH Switch 0.2.1 is a simple plugin that provides SSH controls in Decky's Quick Access Menu, allowing you to control startup of the SSH service, alongside an assistant companion on PC to mount the Deck over SFTP/SSHFS (OS-dependant).
The release on the Decky SSH Switch repository also provides companion SSHFS mount and unmount helpers for Windows, Linux and macOS. These run on the user's computer, which can be used alongside the "Connect from Computer" popup for ease of connection. Windows also supports persistent drives and optional saved settings, with the saved password encrypted for that Windows account. The "Connect from Computer" popup adds SSH management alongside the interface information shown by Decky Network Info.
Task Checklist
Developer
Regarding AI Use: I've used GPT-6 Astra to assist with parts of the implementation, debugging and code review. I’ve modified and tested the Decky plugin on my Steam Deck and the Windows companion scripts on Windows 11.
Plugin
I've tested and verified the plugin on both update channels on SteamOS (Steam Deck).
Similar functionality has been proposed in Easy SSH (#1034), which remains open (but stale), and Decky SSH (#1104), which was closed without merging. Both provide SSH controls from the Quick Access Menu, and Decky SSH also includes password changes with current-password verification.
SSH Switch shares those features and adds separate control over whether SSH starts at boot, along with a “Connect from computer” screen showing the connection details, host fingerprint and available remote folders. The companion mount and unmount scripts for Windows, Linux and macOS use those details to help users access their Deck’s files from their computer, with the Windows script inspired by MonroeWorld's script as a base. This connection and file-access workflow is the main additional functionality offered by this submission.
Backend
The backend is Python and uses systemctl, sshd and chpasswd. It also dynamically loads SteamOS’s libcrypt.so.1 for password verification and hashing. The plugin does not bundle or download additional native binaries. The companion mounting scripts run separately on the user’s computer.
Community
Testing