Emacs Tramp застрял в строке «Найдена удаленная оболочка» во время выборки файла

Я недавно установил новую машину FreeBSD и не могу подключиться через Emacs Tramp. Он застревает на «Tramp: Found remote shell prompt on 'broken.example.com'». (имена хостов изменены для анонимности)

Я увеличил отладку до 10, как я уже видел, и она застревает в этой команде.

stty icanon erase ^H cols 32767

Он постоянно выполняет эту команду в цикле. Полный журнал можно загрузить по адресу http://depht.com/temp/emacs-tramp-broken.example.com.txt

stty -a с сайта broken.example.com.

speed 9600 baud; 65 rows; 32767 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho -pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel -ignbrk
    brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl tab0 -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^@; eof = ^D; eol = <undef>;
    eol2 = <undef>; erase = ^H; erase2 = ^T; intr = ^C; kill = ^U;
    lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q;
    status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W;

У меня есть немного более старая машина OpenBSD, с которой хорошо работает тот же клиент Emacs Tramp, working.example.com. Журнал подключения к этому компьютеру находится по адресу http://depht.com/temp/emacs-tramp-working.example.com.txt

'stty -a' с сайта working.example.com

speed 9600 baud; 65 rows; 166 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc -xcase
iflags: -istrip icrnl -inlcr -igncr -iuclc ixon -ixoff ixany imaxbel
        -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl -onocr -onlret -olcuc oxtabs -onoeot
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -mdmbuf
cchars: discard = ^O; dsusp = ^@; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^H; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;

Я испортил настройки stty на broken.example.com, чтобы имитировать настройки working.example.com, но безуспешно. Я не совсем понимаю все настройки stty. Возможный путь атаки - stty pendin, который, как сказано на странице руководства stty, связан с icanon. Однако я не могу установить -pendin на broken.example.com. 'stty -pendin', выполняемый либо через сценарий входа в систему, либо после входа в систему вручную, не приводит к установке '-pendin'.

На данный момент я полностью потерялся, и любая помощь будет очень признательна. Заранее спасибо!!


person Smutt    schedule 01.06.2016    source источник


Ответы (1)


При чтении ваших файлов трассировки возникает несколько проблем.

  1. Вы получили сообщение

    ControlPath "/var/folders/y8/zyh_szbx38s64w6/bin/sh6nlhtm0000gp/T/[email protected]:1345.RPyknjfNbHeeMjoQ" too long for Unix domain socket
    

Вероятно, на вашем локальном компьютере работает OS X, и вы столкнулись с ошибкой http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19702. Это решено уже в Emacs 24.5 (вам следует запустить 24.4), и Tramp, похоже, не сталкивается с этим.

  1. Бродяга отправляет команду stty icanon erase ^H cols 32767 удаленно. Сама команда не является проблемой, но ваш удаленный хост возвращает escape-последовательности, которые Tramp не понимает. Какая оболочка запускается удаленно, когда Tramp вызывает /bin/sh? Как бы то ни было, вы должны отключить в этой оболочке все причудливые украшения, такие как настройки подсказок, очистка экрана или что-то еще. См. Руководство Tramp, чтобы узнать, как это сделать. Временно отключите оценку ~/.profile или того, что оболочка прочитала во время инициализации.
person Michael Albinus    schedule 01.06.2016