SSH зависает при «запросе exec принят на канале 0»

У меня есть вопрос, который очень похож на другие, которые были заданы, но ни один из них не ответил на мою проблему. Я бегу в ошибку ssh при отправке команды (не загружая интерактивную оболочку).

Сценарий

Моя оболочка по умолчанию в моей компании - это csh, а не что-то более разумное, например bash. Я знаю, что bash поддерживается, поскольку некоторые другие товарищи по команде используют это оболочка по умолчанию. Для всех наших процессов csh работает нормально, но я просто хотел бы использовать что-нибудь получше. Я изменил свой .cshrc, чтобы запустить bash.

setenv SHELL /bin/bash
exec /bin/bash --login

Это прекрасно создает оболочку, устанавливает SHELL переменная среды и запускает bash при запуске. Проблема возникает со всеми командами ssh (и rsh), которые запускаются либо через скрипты, либо вручную. Я могу запустить ssh user @ host и получить оболочку нормально, но Я пытаюсь запустить ssh -vvv user @ host "echo hello"

Он зависает в конце после аутентификации g и отправив команду с помощью

debug1: Sending command: echo hello
debug2: channel 0: request exec confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: exec request accepted on channel 0

What I Tried

Эти изменения тестируются путем отправки ss-кода на localhost, чтобы не усложнять задачу.

Изменения .bashrc и .bash_profile

Я играл с таким количеством различных конфигураций .bashrc и .bash_profile, убедившись, что это не связано с переменными среды. На самом деле это не проблема, поскольку в bash они все такие же, как и в csh (что отлично работает).

Добавляя -t

, я добавил -t к ssh для подключения, но на самом деле он не запускает команду, которую я ему говорю, но дает мне оболочку для использования. Это также не обязательно решение само по себе, поскольку кучу сценариев нельзя изменить, поскольку они доступны всем.

[user@host: ~/test ] $ ssh -t user@host "echo hello"
[user@host ~]$

Проверка работоспособности в csh

С -t :

[user@host: ~/test ] $ ssh -t user@host "echo hello"
hello
Connection to host closed.
[user@host: ~/test ] $

Без -t :

[user@host: ~/test ] $ ssh -t user@host "echo hello"
hello
[user@host: ~/test ] $

Дополнительная информация

ИТ-служба моей компании обратила внимание и просто сказал, что это проблема с моим профилем bash и взглянул на мои .bashrc и .bash_profile, по сути говоря, чтобы я разобрался сам. Я не говорю, что они ошибаются, но я говорю, что проделал всю отладку, которую только мог придумать, и поэтому я иду сюда. Это также в значительной степени означает, что я не могу ничего изменить на стороне сервера и должен полагаться на сторону клиента / пользователя.

Bash определенно загружен и не работает csh с моими изменениями .cshrc, судя по ps:

   PID TTY          TIME CMD
  6725 pts/68   00:00:00 bash
 26391 pts/68   00:00:00 ps

Заключение

Что, черт возьми, происходит? Я очень сбит с толку, так как не очень хорошо разбираюсь в внутренней работе ssh и еще менее уверен, почему csh ведет себя так, а бьет по другому.Неужели мой запуск bash выглядит странно?

0
задан 19 November 2019 в 09:07
1 ответ

Ответ на мой собственный вопрос, но... Я попробовал что-то новое, которое, казалось, работало?

я закончил тем, что переместил команды запуска удара (setenv и exec) от .cshrc до .login. Я понятия не имею, почему это изменило бы вещи, так как насколько я знаю, csh загружает обе из тех вещей тот же путь и одно право за другим. Но с этим, ssh теперь работает и все мои сценарии, мне были нужны выполнения. Так..., если у кого-либо еще когда-нибудь есть проблема как это, попробуйте этот простой шаг.

0
ответ дан 23 November 2019 в 13:44

Теги

Похожие вопросы