7

I've been using tramp to edit remote files for a few years now, but suddenly it stopped working yesterday. I haven't changed anything relevant that I can think of. For testing, I tried opening a file on localhost with \C-x C-f /ssh:localhost:/home/terdon/test. That bring up the Waiting for prompts from remote shell... message and times out after about a minute with:

Timeout reached, see buffer '*tramp/ssh localhost*' for details

The *tramp/ssh localhost* is shown in the buffers menu but disappears as soon as I try to switch to it.

Details

  • I am running GNU emacs 25.3.1 on Arch Linux.
  • I have updated my system and the elpa packages I have installed.
  • To rule out problems with the remote prompt, I have replaced my ~/.bashrc and ~/.profile with:

    $ cat ~/.bashrc
    PS1='$ '
    $ cat ~/.profile
    PS1='$ '
    

    Yes, my default shell is bash and no, I don't have a ~/.bash_profile.

  • I have set up passwordless ssh to all the servers that I've tried and which used to work. Including localhost (ssh localhost works fine with no password).

  • My .emacs file has (the full file can be found here: https://pastebin.com/QGgPE3SS):

    (setq tramp-default-method "sshx")
    (setq tramp-verbose 10)
    
  • The contents of the *debug tramp/ssh localhost* buffer are here: https://pastebin.com/F6r6d5cN.

  • I read Tramp: Waiting for prompts from remote shell... Sending command `exec ssh -e none bin' and added these lines to my ~/.ssh/config file:

    Host *
      ControlPath ~/.ssh/master-%r@%h:%p
      ControlMaster auto
      ControlPersist = no 
    

    However, despite that, as you can see in the output in the previous bullet point, I still get command-line line 0: Missing ControlPersist argument line. Is that an issue?

  • Running the ssh command from tramp's log maually works fine:

    $ ssh -o ControlMaster=auto -o ControlPath='tramp.%C' -o ControlPersist=no -e none localhost
    Last login: Tue Apr 24 13:58:15 2018 from ::1
    $ 
    
  • Trying the same thing after loading emacs with emacs -Q gives the same problem, so it isn't something to do with my ~/.emacs.

  • I created a new user with default settings and tried as that user and it worked! So while emacs -Q doesn't solve the issue, running as a new user does! What could cause that?

What else can I check? How can I get my tramp back again?

7
  • You have set tramp-verbose to 10, so there is a Tramp debug buffer. Pls show it. Commented Apr 24, 2018 at 14:45
  • @MichaelAlbinus I link to it in my penultimate bullet point: pastebin.com/F6r6d5cN (sorry, I guess it got lost in the noise, I was trying to give as much detail as I could).
    – terdon
    Commented Apr 24, 2018 at 14:49
  • According to the traces, Tramp sends the command "exec ssh -o ControlMaster=auto -o ControlPath='tramp.%C' -o ControlPersist=no -e none localhost". Afterwards, it waits 1 minute for output, but nothing happens. Could you try the command from a shell, and see what happens? Commented Apr 24, 2018 at 16:36
  • @MichaelAlbinus that works immediately. I log into localhost after ~1sec or less.
    – terdon
    Commented Apr 24, 2018 at 16:38
  • Strange. Have you tried to use Tramp with a clean Emacs, after calling emacs -Q ? Commented Apr 24, 2018 at 18:09

2 Answers 2

3

This is an issue mentioned in the Emacs Wiki:

If you have Control-j mapped in your ~/.inputrc ... it can cause tramp to never finish recognizing the shell prompt.

For me, the problem went away when I conditionally defined C-j binding only for non-dumb terminals:

$if term=dumb
# skip
$else
Control-j: foo
$endif
2

It turns out the problem was a malformed ~/.inputrc file. I had been playing around with it while trying to answer a question over at Unix & Linux and had left this line:

Control-J: "$(date)"

Removing that line fixed my problem with tramp. I don't understand why the local ~/.inputrc would affect my remote shell (I also faced this problem when connecting to actual remote hosts, not only localhost), but apparently it did.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.