0.1.0: ssh install works over sftp and runs nothing on the host #12

Open
clawbot wants to merge 1 commits from next into main
Collaborator

Milestone for the ssh install rework you asked for on #10, on top of the 0.1.0 work already on main.

What is on next: one squashed commit. keyfunc ssh install runs no command on the host: it reads .ssh/authorized_keys over sftp, appends the derived key locally only when an identical line is absent, uploads the result beside the file with mode 0600 and renames it over the original. Absence is taken only from sftp's own message about that path; any other failure prints what sftp said, writes nothing and exits 1. Three full review rounds; the first two caught a real defect (an unreadable file treated as absent) that is now closed.

What you need to know to merge or tag:

  • sftp batch mode disables password prompts, so install needs a key or an agent for its connections; the README says so.
  • A ~/.ssh the owner cannot enter still reads as a host with no file and gets replaced; sftp could tell the two apart and this change does not. The README states it; a follow-up is filed on the tracker.
  • Options after -- go to sftp unchanged, so the port flag is -P.

Waiting on you: merge, then tag 0.1.0 on main.

Model: fable-5-1

Milestone for the `ssh install` rework you asked for on https://git.eeqj.de/sneak/keyfunc/issues/10, on top of the 0.1.0 work already on `main`. What is on `next`: one squashed commit. `keyfunc ssh install` runs no command on the host: it reads `.ssh/authorized_keys` over sftp, appends the derived key locally only when an identical line is absent, uploads the result beside the file with mode 0600 and renames it over the original. Absence is taken only from sftp's own message about that path; any other failure prints what sftp said, writes nothing and exits 1. Three full review rounds; the first two caught a real defect (an unreadable file treated as absent) that is now closed. What you need to know to merge or tag: - sftp batch mode disables password prompts, so `install` needs a key or an agent for its connections; the README says so. - A `~/.ssh` the owner cannot enter still reads as a host with no file and gets replaced; sftp could tell the two apart and this change does not. The README states it; a follow-up is filed on the tracker. - Options after `--` go to sftp unchanged, so the port flag is `-P`. Waiting on you: merge, then tag `0.1.0` on `main`. Model: fable-5-1
clawbot self-assigned this 2026-09-08 08:20:19 +02:00
clawbot added 1 commit 2026-09-08 08:20:19 +02:00
ssh install works over sftp and runs nothing on the host (closes #10)
All checks were successful
check / check (push) Successful in 4s
8aeed7b901
ssh install no longer runs a command on the host. It reads .ssh/authorized_keys over sftp, takes the empty reading only from sftp's own message about that path, appends the derived key locally when it is not already present, uploads the result beside the file with mode 0600 and renames it over the original. Any other failure prints what sftp said, writes nothing and exits 1. sftp batch mode disables password prompts, so a key or agent is required; a directory the owner cannot enter reads as a host with no file, which README.md states.

Model: opus-5 (implementation); fable-5-1 (landing)
clawbot added 1 commit 2026-09-08 08:20:19 +02:00
ssh install works over sftp and runs nothing on the host (closes #10)
All checks were successful
check / check (push) Successful in 4s
8aeed7b901
ssh install no longer runs a command on the host. It reads .ssh/authorized_keys over sftp, takes the empty reading only from sftp's own message about that path, appends the derived key locally when it is not already present, uploads the result beside the file with mode 0600 and renames it over the original. Any other failure prints what sftp said, writes nothing and exits 1. sftp batch mode disables password prompts, so a key or agent is required; a directory the owner cannot enter reads as a host with no file, which README.md states.

Model: opus-5 (implementation); fable-5-1 (landing)
clawbot added the merge-ready label 2026-09-08 08:20:42 +02:00
clawbot removed their assignment 2026-09-08 08:20:42 +02:00
sneak was assigned by clawbot 2026-09-08 08:20:42 +02:00
All checks were successful
check / check (push) Successful in 4s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin next:next
git checkout next
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/keyfunc#12