Configure Mercurial for SSH on alternate port and specific key with a passphrase

mercurialsshsshd

I'm trying to configure mercurial for use on a remote machine that has sshd running on an alternate port, and for which my login requires a particular key, which uses a passphrase.
ssh is configured and working fine, as with:

 ssh -i ~/.ssh/id_rsa-xyz -p 1234 myuser@barney.example.com

My issue is what goes into the hgrc files to make this work with either of an alias (barney-stuff) or the default-push property:

 hg push barney-alias
 hg push

Most of the ssh documentation I've seen for Mercurial presumes the default port and a pre-loaded key.

I tried adding this to the repository's hgrc file:

 ssh = /usr/bin/ssh -i /home/me/.ssh/id_rsa-xyz -p 1234
 default = ssh://myuser@barney.example.com//hgroot/project1

But an hg push just hangs.

Best Answer

  • My bad - the hgrc file should have the sections headers:

     [ui]
     ssh = /usr/bin/ssh -i /home/me/.ssh/id_rsa-xyz -p 1234
     [paths]
     default = ssh://myuser@barney.example.com//hgroot/project1
    

    With that change, it gives me the error:

    remote: abort: requirement 'fncache' not supported!
    abort: no suitable response from remote hg!
    

    Which is because the remote machine only has a pre-1.1 version of Mercurial.