kubernetes/kops · error
error starting sftp (executing 'sudo /usr/lib/openssh/sftp-s
Error message
error starting sftp (executing 'sudo /usr/lib/openssh/sftp-server'): %w
What it means
Returned by SSHPath.newClient when sftp.NewClientPipe over the launched sftp-server process fails — the subprocess started but the SFTP protocol handshake over stdin/stdout did not complete. Typically the remote sftp-server exited immediately (bad binary, sudo failure surfaced late) or the stream became unusable.
Source
Thrown at util/pkg/vfs/sshfs.go:86
}
stdin, err := s.StdinPipe()
if err != nil {
return nil, fmt.Errorf("error creating sftp client (at stdin pipe): %w", err)
}
stdout, err := s.StdoutPipe()
if err != nil {
return nil, fmt.Errorf("error creating sftp client (at stdout pipe): %w", err)
}
err = s.Start("sudo /usr/lib/openssh/sftp-server")
if err != nil {
return nil, fmt.Errorf("error creating sftp client (executing 'sudo /usr/lib/openssh/sftp-server'): %w", err)
}
c, err := sftp.NewClientPipe(stdout, stdin)
if err != nil {
return nil, fmt.Errorf("error starting sftp (executing 'sudo /usr/lib/openssh/sftp-server'): %w", err)
}
return c, nil
}
func (p *SSHPath) Path() string {
return "ssh://" + p.server + p.path
}
func (p *SSHPath) String() string {
return p.Path()
}
func (p *SSHPath) Remove(ctx context.Context) error {
sftpClient, err := p.newClient(ctx)
if err != nil {
return err
}
defer sftpClient.Close()View on GitHub (pinned to 4c8573c808)
Solutions
- Inspect the wrapped error for EOF, which indicates the remote sftp-server died — verify the binary and sudo setup on the host
- Retry after re-establishing the SSH connection; transient protocol handshakes failures occur on loaded links
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at util/pkg/vfs/sshfs.go:86 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/d1a342faeba7c4cf.
Report an issue: GitHub.