Устранение неполадок | ssh работает успешно, но scp не работает
Устранение неполадок | ssh работает успешно, но scp не работает

0. Предисловие#

Настройка некоторое время назад jenkins publish over ssh обнаружил, когда jenkins Невозможно подключиться к серверу, проверено ssh Вы можете войти в систему как обычно, но scp Сообщить об ошибке subsystem request failed on channel 0, Запишите идеи по устранению этой проблемы.

1. Общая идея#

Конфигурации, влияющие на ssh, представляют собой не что иное, как следующее:

  • Проблемы с сетью: server и client междуиз Сеть заблокированаилибрандмауэр Конфигурация
  • Проблемы аутентификации: пароль и ключ учетной записи неверны.
  • Конфигурациявопрос:
    • сервер сам терминал sshd Ошибка сервиса не нормальна
    • server конец отклонения client из алгоритма шифрования,часто появляютсясуществоватьстарый Версия ssh Появляется при подключении к более высокой версии
    • server конец нарушения Некоторые пользователииз Авторизоваться, Например, это в принципе запрещено в производственных средах. root Авторизоваться

Общая идея состоит в том, чтобы попытаться найти ту же самую конфигурацию. server и client Выполните перекрестное сравнение, Найдите проблемные места, Включает следующие четыре роли: Эта неисправность находится в client-docker существовать scp server-1 появиться, когда

Роль

Версия ОС

SSH-версия

Примечание

client-1

Centos 7.9

OpenSSH_7.4p1

client-docker

docker container

OpenSSH_9.2p1

fail

server-1

Centos 7.9

OpenSSH_7.4p1

fail

server-2

Centos 7.9

OpenSSH_7.4p1

проверено, Помимо вышеперечисленных неисправностей,все client верновсе server осуществлять ssh или scp Нет никаких проблем, способный ssh На самом деле успех означает, что проблемные области оказались не такими, как мы ожидали ранее.

2. debug#

Это было бы загадочно, к счастью scp Команда обеспечивает -v параметр, могу показать больше debug информация, Поэтому мы решили сделать исключение scp из debug информация и нормальность scp из debug информация для сравнения, Начни веселиться Найдите разницу связь

(нормальная ситуация) client-1 scp server-1 из debug информация

Язык кода:javascript
копировать
# scp -v test app@server-1:/home/app/
......
debug1: Authentication succeeded (password).
Authenticated to 11.53.57.80 ([11.53.57.80]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending command: scp -v -t /home/app/
Sending file modes: C0644 0 test
Sink: C0644 0 test
test       100%    0     0.0KB/s   00:00
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 2120, received 2344 bytes, in 0.2 seconds
Bytes per second: sent 12262.0, received 13557.6
debug1: Exit status 0

(нормальная ситуация) client-docker scp server-2 из debug информация

Язык кода:javascript
копировать
# scp -v test app@server-2:/home/app/
......
Authenticated to 11.53.57.74 ([11.53.57.74]:22) using "password".
debug1: channel 0: new session [client-session] (inactive timeout: 0)
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: filesystem
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: client_input_hostkeys: searching /root/.ssh/known_hosts for 11.53.57.74 / (none)
debug1: client_input_hostkeys: searching /root/.ssh/known_hosts2 for 11.53.57.74 / (none)
debug1: client_input_hostkeys: hostkeys file /root/.ssh/known_hosts2 does not exist
debug1: Sending environment.
debug1: channel 0: setting env LANG = "C.UTF-8"
debug1: Sending subsystem: sftp
debug1: client_global_hostkeys_prove_confirm: server used untrusted RSA signature algorithm ssh-rsa for key 0, disregarding
debug1: update_known_hosts: known hosts file /root/.ssh/known_hosts2 does not exist
debug1: pledge: fork
test      100%    0     0.0KB/s   00:00
scp: debug1: truncating at 0
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 3124, received 3084 bytes, in 0.0 seconds
Bytes per second: sent 88478.9, received 87346.1
debug1: Exit status 0

(ненормальная ситуация) client-docker scp server-1 из debug информация

Язык кода:javascript
копировать
# scp -v test app@server-1:/home/app/
......
Authenticated to 11.53.57.80 ([11.53.57.80]:22) using "password".
debug1: channel 0: new session [client-session] (inactive timeout: 0)
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: filesystem
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: client_input_hostkeys: searching /root/.ssh/known_hosts for 11.53.57.80 / (none)
debug1: client_input_hostkeys: searching /root/.ssh/known_hosts2 for 11.53.57.80 / (none)
debug1: client_input_hostkeys: hostkeys file /root/.ssh/known_hosts2 does not exist
debug1: Sending environment.
debug1: channel 0: setting env LANG = "C.UTF-8"
debug1: Sending subsystem: sftp
debug1: client_global_hostkeys_prove_confirm: server used untrusted RSA signature algorithm ssh-rsa for key 0, disregarding
debug1: update_known_hosts: known hosts file /root/.ssh/known_hosts2 does not exist
debug1: pledge: fork
subsystem request failed on channel 0
scp: Connection closed

Исключив избыточность, мы можем найти:

  • (нормальная ситуация) client-1 scp server-1 из debug информациясередина, Sending environment Следующие шаги Sending command: scp -v -t /home/app/
  • (нормальная ситуация) client-docker scp server-2 из debug информациясередина, Sending environment Следующие шаги Sending subsystem: sftp
  • (ненормальная ситуация) client-docker scp server-1 из debug информациясередина, Sending environment Следующие шаги Sending subsystem: sftp, но subsystem request failed

Можно сделать вывод, что проблемная точка существует. scp из Вызывается в процессе sftp, Но потому что sftp из Некоторые причиныпривести Что-то пошло не так

3. sftp#

Поэтому я пошел сравнивать их. server из ssh О конфигурации sftp из Конфигурация

нормальный server из Конфигурация

Язык кода:javascript
копировать
# grep -i 'sftp' /etc/ssh/sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/mysftp
ForceCommand internal-sftp

аномальный server из Конфигурация

Язык кода:javascript
копировать
# grep -i 'sftp' /etc/ssh/sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server

Вы можете видеть, что аномальный сервер sftp не включен.

удалять sftp из Перезагрузка после комментирования sshd, После повторной попытки все восстановилось, как и ожидалось.

4. Подвести итог#

На этом этапе мы можем определить, что проблема связана с использованием протокола sftp для передачи в scp, а sftp не включен на стороне сервера, что приводит к сбою scp.

Наконец, подтвердите, почему scp позвоню sftp, существовать openssh 9.0p1 release Нашёл следующее описание:

This release switches scp(1) from using the legacy scp/rcp protocol to using the SFTP protocol by default.

от 9.0p1 начинать, scp будет использоваться по умолчанию sftp осуществлять передачу, Можно использовать -O вариант делает scp использовать legacy SCP protocol передача

Вот и все

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода