Вопрос или проблема
Я запускаю ssh в Bash 5.2.21 и не получаю никаких выходных данных от ssh -V
, ssh --help
, ssh abc
, ssh -v abc
, ssh -vv abc
, ssh -vvv abc
. Я заменил хост, к которому пытаюсь подключиться, на abc в качестве заполнителя. Код выхода от echo $?
показывает 127, что “является стандартным сообщением об ошибке, которое указывает на то, что система не смогла выполнить команду.” ssh раньше работал отлично. Я знаю из установщика, что это OpenSSH версии 9.9p1-1. Другие команды, похоже, работают нормально.
Он установлен на cygwin под Windows, но я думал, что это не должно влиять на неправильное поведение бинарного файла. Он даже не показывает свой собственный номер версии. which ssh
показывает /usr/bin/ssh, и это исполняемый файл размером 933395, который находится в пути. Использование полного имени пути к исполняемому файлу для его запуска не изменяет результат.
Я пробовал strace, но это не дало мне ничего полезного.
Ответ или решение
SSH (Secure Shell) – это мощный инструмент для удаленного доступа и администрирования серверов. Однако ваша ситуация, когда команды SSH завершаются без какого-либо вывода и возвращают код ошибки 127, может быть весьма разочаровывающей. Давайте разберемся в причинах, по которым SSH может "молчать", а также в возможных решениях этой проблемы.
Причины молчания SSH
-
Отсутствие исполняемого файла: Код ошибки 127 обычно указывает на то, что система не может найти или запустить запрашиваемую команду. В вашем случае, хотя
which ssh
говорит, что файл существует по пути/usr/bin/ssh
, стоит проверить, является ли это действительно исполняемым файлом. Вы можете использовать командуfile /usr/bin/ssh
, чтобы убедиться, что это не поврежденный файл или символическая ссылка на несуществующее местоположение. -
Проблемы с зависимостями: SSH требует определённых библиотек для работы. Если они отсутствуют или повреждены, команда может не выполняться, что также может привести к ошибке 127. Проверьте, установлены ли все зависимости, используя пакетный менеджер Cygwin.
-
Переменные среды: В некоторых случаях переменные среды могут влиять на работу SSH. Проверьте, настроены ли переменные PATH и другие переменные корректно, не мешают ли они выполнению SSH.
-
Неправильные разрешения: Разрешения на файл SSH или каталоги, в которых он находится, могут быть некорректными. Убедитесь, что файл SSH имеет права на выполнение (
chmod +x /usr/bin/ssh
) и доступен для текущего пользователя. -
Ошибки конфигурации: Если существует ошибка в файлах конфигурации SSH (например, в
~/.ssh/config
или/etc/ssh/ssh_config
), это может приводить к сбоям при запуске. Попробуйте временно переименовать или удалить эти файлы, чтобы проверить, сохраняется ли проблема. -
Кросс-платформенные проблемы: Учитывая, что вы используете Cygwin на Windows, возможны конфликты с PATH или другим исполняемым окружением. Переключение на другую среду или, возможно, использование WSL (Windows Subsystem for Linux) вместо Cygwin может оказаться полезным решением.
Рекомендации по устранению неисправностей
-
Проверка Исполняемого Файла: Перейдите в каталог
/usr/bin/
и убедитесь, что файлssh
существует и имеет правильные разрешения. -
Используйте strace или ldd: Попробуйте использовать
ldd /usr/bin/ssh
, чтобы проверить зависимости. Если будет указано, что какие-либо библиотеки отсутствуют, установите их. -
Переустановите OpenSSH: Возможно, имеет смысл удалить текущую установку OpenSSH и установить ее заново. Это может помочь устранить проблемы с поврежденными файлами или неправильной конфигурацией.
-
Изучите Логи: Проверьте логи системы и Cygwin на наличие сообщений об ошибках, которые могут указывать на более глубокие проблемы в среде.
-
Пошаговая отладка: Если все вышеперечисленное не дало результатов, поступайте пошагово: попробуйте запускать простейшие команды, изолируя каждый компонент, который может вызывать конфликт.
В завершение, возможно, разбирательство с молчанием SSH потребует много времени и терпения, однако с правильным подходом и тщательным анализом вы сможете выявить и устранить причину вашего затруднения. Это не только восстановит работоспособность SSH, но и улучшит ваше понимание системы в целом.