Bug#1052451: openssh-client: Ctrl-C kills ssh but not ssh-add, which steals input from the terminal

Vincent Lefevre <[email protected]>
Newsgroups gmane.linux.debian.devel.ssh
Message-ID <20230922121352.GA54549__6195.94303877733$1695384946$gmane$org@cventin.lip.ens-lyon.fr>
Control: retitle -1 openssh-client: Ctrl-C does not kill a ssh-add run from a script

(No issues with ssh-add is run directly from the shell, see below.)

On 2023-09-22 12:18:24 +0200, Vincent Lefevre wrote:
> On 2023-09-22 12:10:19 +0200, Vincent Lefevre wrote:
> > On 2023-09-22 11:28:12 +0200, Vincent Lefevre wrote:
> > > It seems that that ssh command runs ssh-add automatically.

That's actually a ssh wrapper I use that does that. I thought that
the wrapper was not involved here because it was no longer running.
What happens is that the Ctrl-C seems to kill the wrapper (thus ssh
and unison terminate too, returning to mutt), but not ssh-add, hence
the issue.

A possibly important point: I call ssh-add with several files in
argument, and a Ctrl-C aborts the first passphrase, but ssh-add is
still running for the other passphrases, which is bad.

An example:

cventin:~> unison mail -root "ssh://joooj/Mail"
Unison 2.53.3 (ocaml 4.13.1): Contacting server...
Enter passphrase for /home/vlefevre/.ssh/id_rsa: 

"ps -fu vlefevre" shows in particular:

vlefevre   54481   54467  0 13:50 pts/4    00:00:00 cat
vlefevre   54483   54467  0 13:50 pts/4    00:00:00 ssh-add /home/vlefevre/.ssh/id_rsa /home/vlefevre/.ssh/id_rsa-and

(the long line is truncated).

Now I type Ctrl-C, which gives:

Enter passphrase for /home/vlefevre/.ssh/id_rsa: Terminated!
cventin:~[3]>                                                         <13:50:24

and "ps -fu vlefevre":

vlefevre   54481       1  0 13:50 pts/4    00:00:00 cat
vlefevre   54483       1  0 13:50 pts/4    00:00:00 ssh-add /home/vlefevre/.ssh/id_rsa /home/vlefevre/.ssh/id_rsa-and

These processes are now attached to pid 1, with still pts/4 as
the associated terminal.

If I type any character, ssh-add receives the key as the following
is output:

Enter passphrase for /home/vlefevre/.ssh/id_rsa-android: 
Enter passphrase for /home/vlefevre/.ssh/id_rsa-cfarm: 
[...]

and ssh-add terminates.

But when unison is run from Mutt, this is worse, as ssh-add doesn't
terminate on receiving a key.

So it seems that ssh-add incorrectly handles signals.

Note that if I run ssh-add with several files directly from the
shell, there are no issues: ssh-add is killed as expected, without
printing anything about the other files.

[...]
> But a "kill -QUIT 2358" killed it:
[...]

However, the terminal got in a broken state and mutt was no longer
receiving any key.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.