SSH Frequently Asked Questions
I'm trying to scp
using an OpenSSH client to an SSH2 server.
ssh
works fine, but scp
returns this:
Executing ssh1 in compatibility mode failed
This problem is often quite perplexing, since a
ssh -v
trace
may show that you're using SSH-2 so what is a message about "ssh1
compatibility mode" doing in there? What's happening is this:
- On the OpenSSH client, you run say,
scp foo server:bar
. scp
runsssh
in a subprocess to connect to the server, and run the remote commandscp -t bar
. This is intended to start an instance of the scp program on the server, and the two scp's will cooperate by speaking over the SSH connection, to retrieve the file.ssh
connects to the server (using either protocol 1 or 2, it doesn't matter), and runs the remote scp command. However, the "scp" that gets run on the server is the SSH2 scp program (scp2), not the OpenSSH one. The crux of the problem is: besides the name, these two scp's have exactly nothing in common.scp2
cannot speak the file-transfer protocol that OpenSSH scp does. However, scp2 recognizes from the "-t" flag what's expected, and tries exec scp1 to service the connection (this is the extent of SSH2's SSH-1 compatibility; where OpenSSH has code for both protocols in a single set of programs, SSH2 expects to execute programs from a parallel SSH1 installation). It fails (presumably because you don't have SSH1 installed), and reports the problem.