WinSCP подключается к экземпляру Amazon AMI EC2, меняя пользователя после входа в систему root

Я тщательно следовал инструкциям здесь, однако у меня не получилось правильно. Вот что я сделал:

  1. Запустите WinSCP, введите имя хоста (эластичный IP-адрес моего экземпляра)
  2. введите имя пользователя "ec2-user"
  3. введите файл открытого ключа
  4. выбрал SCP для протокола
  5. В настройках SCP/Shell я выбрал «sudo su -»
  6. Нажмите Войти
  7. WinSCP запрашивает ключ фразы-пароля, нажмите OK
  8. Выдает эту ошибку

Ошибка пропуска сообщения о запуске. Вероятно, ваша оболочка несовместима с приложением (рекомендуется BASH).

ПРИМЕЧАНИЕ. Это работает в Putty.


person Aivan Monceller    schedule 20.06.2011    source источник
comment
Привет Айван. Возможно, вам повезет больше на superuser.com.   -  person Matt Solnit    schedule 20.06.2011
comment
Это может помочь получить более подробную картину того, что происходит не так. WinSCP может создавать журналы: winscp.net/eng/docs/logging   -  person Peter    schedule 21.06.2011
comment
У меня такая же проблема, вы нашли решение, которое я не получил ниже, спасибо   -  person ReThink    schedule 26.08.2012
comment
См. winscp.net/eng/docs/faq_su.   -  person Martin Prikryl    schedule 06.03.2015
comment
добиться успеха с blog.jamesbayley.com /28.01.2014/   -  person iMath    schedule 13.10.2018


Ответы (5)


WinSCP не поддерживает команды, требующие эмуляции терминала или пользовательского ввода.

См.: http://winscp.net/eng/docs/remote_command#limitations.

Поскольку sudo su - ожидает пароль, это не сработает.

Есть способ обойти это: сделать root вход в систему без запроса пароля. Вы можете сделать это, отредактировав файл sudoers, обычно расположенный по адресу /etc/sudoers, и добавив:

root ALL=NOPASSWD: ALL

Излишне говорить, что это не очень хорошая вещь - по причинам, которые должны быть очевидны :)

person Jay Sidri    schedule 23.06.2011

С уважением к этот пост и эту ветку форума AWS, кажется, хитрость заключается в том, чтобы закомментировать Defaults requiretty в sudoers. Моя процедура сейчас:

  1. Войдите в свой экземпляр EC2 с помощью Putty.
  2. Запустите sudo visudo, специальную команду для редактирования /etc/sudoers.
  3. Нажмите клавишу Insert, чтобы запустить режим вставки.
  4. Найдите строку Defaults requiretty. Вставьте символ решетки (#) перед этой строкой, чтобы закомментировать ее:
    #Defaults requiretty
  5. Нажмите клавишу Esc, чтобы выйти из режима вставки.
  6. Введите :wq, чтобы записать файл, и закройте visudo.

В WinSCP:

  1. В разделе Advanced > Environment > SCP/Shell измените Shell на sudo su -.
  2. В разделе SSH > Аутентификация выберите файл закрытого ключа (файл .ppk).
person Mark Berry    schedule 05.08.2014
comment
Спасибо. Работал на меня. Я использовал экземпляр Ubuntu 18.04. В моем случае строка requiretty по умолчанию вообще отсутствовала в sudo visudo. Поэтому я сделал только обновления настроек WinSCP. - person Dub Nazar; 03.07.2019

У меня была такая же проблема, и я решил ее, используя шаги, описанные в этом руководстве. Я бы разместил это здесь, но мне не хватает репутации для изображений/скринов.

http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html

person Carl McDade    schedule 06.03.2014
comment
К сожалению, это не сработало для меня. Но как только я закомментировал Defaults requiretty в sudoers, я смог подключиться — даже с проверенной аутентификацией Attempt «interactive-keyboard». - person Mark Berry; 05.08.2014

Следующий учебник работал для меня и содержит полезные скриншоты. Для входа в систему в качестве обычного пользователя с разрешениями sudo достаточно было настроить несколько параметров WinSCP. http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html

Установите протокол сеанса/файла на: SCP, введите IP-адрес хоста/экземпляра, порт - обычно 22 и обычное имя пользователя. Введите учетные данные пароля, если это требуется для входа в систему. Добавьте файл Advanced/SSH/Authentication/Private key.

Снятие флажка Advanced/SSH/Authentication/попытка аутентификации с «интерактивной клавиатурой» должно разрешить Advanced/Environment/SCP Shell/Shell/Shell: sudo su — предоставить разрешения sudo для доступа к каталогам веб-сервера в качестве пользователя, не являющегося владельцем.


Обновление от 03.08.2017

Ведение журнала WinSCP может быть полезно для устранения неполадок: https://winscp.net/eng/docs/logging

[WinSCP] Ведение журнала можно включить на странице «Ведение журнала» диалогового окна «Настройки». Ведение журнала также можно включить из командной строки с помощью параметров /log и /xmllog соответственно, что особенно полезно при написании сценариев. В сборке .NET ведение журнала сеанса включается с помощью Session.SessionLogPath1).

В зависимости от ошибок подключения WinSCP для некоторых установок сервера может потребоваться добавление директивы в файл /etc/sudoers (Ubunto, CentOS, other-Linux-Server), чтобы не требовать TTY для указанного пользователя. Создание файла в /etc/sudoers.d/ (используя такой инструмент, как интерфейс командной строки Amazon или PuTTY) может быть лучшим вариантом, чем редактирование /etc/sudoers. Некоторые версии /etc/sudoers рекомендуют это:

Этот файл ДОЛЖЕН быть отредактирован с помощью команды «visudo» от имени пользователя root. Рассмотрите возможность добавления локального содержимого в /etc/sudoers.d/ вместо прямого изменения этого файла. См. справочную страницу для получения подробной информации о том, как написать файл sudoers.

При редактировании файла sudoers (от имени пользователя root) через командную строку следует использовать команду visudo, чтобы открыть файл, поскольку она проанализирует файл на наличие синтаксических ошибок. Файлы /etc/sudoers.d/ обычно принадлежат пользователю root и chmoded с минимальными разрешениями. Можно сослаться на файл по умолчанию /etc/sudoers, так как он автоматически должен иметь рекомендуемые разрешения chmod при установке. например: 0440 р--р----- .

https://superuser.com/a/869145 :

visudo -f /etc/sudoers.d/имя_файла

Defaults:username !requiretty 

Полезные ссылки:

Форум WinSCP:

Документ WinSCP: https://winscp.net/eng/docs/faq_su

С протоколом SCP вы можете указать следующую команду в качестве пользовательской оболочки на странице SCP/Shell диалогового окна «Дополнительные параметры сайта»:

судо -с

[...]

Обратите внимание, что поскольку WinSCP не может реализовать эмуляцию терминала, вам необходимо отключить параметр sudoers requiretty.

Инструкции в Ubuntu Apache /etc/sudoers рекомендуют добавлять директивы в /etc/sudoers.d, а не редактировать /etc/sudoers напрямую. В зависимости от установки добавление директивы в /etc/sudoers.d/cloud-init также может работать.

Может быть полезно создать тестового пользователя SSH с разрешениями sudo, выполнив шаги, описанные в документации по экземпляру, чтобы убедиться, что у пользователя есть рекомендуемые параметры экземпляра, а любые обновления файлов sudoer на сервере могут выполняться и удаляться, не затрагивая других пользователей.

person 1keown    schedule 10.05.2017

В настройках SCP/Shell вместо «sudo su -» выберите /bin/bash.

Он должен работать.

person Peach    schedule 31.05.2013
comment
/bin/bash позволяет вам войти в систему, но суть в том, чтобы получить разрешения sudo. - person Mark Berry; 05.08.2014