CentOS 7: не удается подключиться через WinSCP при выполнении bash

306
P4tR

Я использую CentOS Server 7 на виртуальной машине (ESXi) с правами root. У меня есть скрипт bash (в моем каталоге /etc/profile.d/), который выполняется сразу после входа в систему. До того, как я создал свой файл .sh в каталоге, не было проблем с подключением к моей виртуальной машине через WinSCP. После создания файла и перезагрузки системы я больше не могу подключиться. OpenSSH установлен .. Кажется, что выполнение bash блокирует соединение. Если я удаляю мой файл .sh через консоль, после этого соединение устанавливается снова. Это проблема CentOS? Никогда не было этой проблемы под Ubuntu Server.

Ошибка, которую я получаю:

Не удалось инициализировать протокол SFTP. На хосте работает SFTP-сервер?

Есть идеи? Заранее спасибо!

0
Что в этом сценарии? Eugen Rieck 6 лет назад 1
Я мог бы опубликовать то, что находится внутри скрипта, но это сотни строк .. Никогда не было проблем с ним под Ubuntu Server. Даже если он содержит некоторые ошибки, это не должно блокировать соединение? P4tR 6 лет назад 0
Вы несете ответственность за публикацию [Пример минимального, полного и проверяемого] (https://stackoverflow.com/help/mcve). Пока вы не сделаете это, вы не сможете получить лучший ответ, чем опубликовал @tripleee (что, скорее всего, является правильным ответом). + Почему вы думаете, что ошибка не может заблокировать соединение? Martin Prikryl 6 лет назад 0
Вы правы .. Я заменил содержимое скрипта простым `echo` для тестирования .. И на этот раз соединение не заблокировано .. Так что это ошибка скриптов .. Спасибо за вашу помощь! P4tR 6 лет назад 0

1 ответ на вопрос

1
tripleee

Вы не показываете нам свой сценарий, так что это, очевидно, несколько умозрительно; но, скорее всего, ваш сценарий не должен быть включен, profile.dпотому что он требует какого-то взаимодействия с пользователем.

Профиль должен быть зарезервирован исключительно для вещей, которые должны работать даже в неинтерактивных сессиях.

Правильное место для интерактивной функциональности, вероятно, вовсе не в ваших сценариях входа в систему, а что-то вроде этого, например, в вашем, $HOME/.bash_profileпо крайней мере, вы можете избежать ущерба для неинтерактивных сеансов.

case $- in *i*) invoke your script here;; esac 

Если у вас .bash_profileуже есть, он может уже содержать case $-заявление, которое вы можете изменить вместо добавления второго.

Я переместил свой скрипт из /etc/profile.d в мой каталог $ HOME. Теперь он выполняется с помощью .bash_profile, и WinSCP может подключиться без проблем. Спасибо! P4tR 6 лет назад 0

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