WinSCP подключается к инстансу Amazon AMI EC2, меняя пользователя после входа в систему как «root» - PullRequest
7 голосов
/ 20 июня 2011

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

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

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

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

Ответы [ 5 ]

9 голосов
/ 05 августа 2014

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

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

В WinSCP:

  1. В разделе Advanced> Environment> SCP / Shell измените Shell на sudo su -.
  2. В разделе SSH> Аутентификация выберите свой файл закрытого ключа (.ppk file).
2 голосов
/ 06 марта 2014

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

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

2 голосов
/ 23 июня 2011

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

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

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

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

root ALL=NOPASSWD: ALL

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

1 голос
/ 10 мая 2017

Следующий урок работал для меня и предоставляет полезные скриншоты. Для входа в систему как обычного пользователя с разрешениями 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 / Аутентификация / попытка "интерактивной клавиатуры" аутентификации должно позволять Advanced / Environment / SCP Shell / Shell / Shell: sudo su - предоставлять разрешения sudo для доступа к каталогам веб-сервера как пользователь, не являющийся владельцем.


Обновление 08.03.2017

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

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

В зависимости от ошибок подключения WinSCP для некоторых установок серверов может потребоваться добавление директивы в файл (Ubunto, CentOS, other-Linux-Server) / etc / sudoers, чтобы не требовать 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 r - r -----.

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

visudo -f /etc/sudoers.d/somefilename

Defaults:username !requiretty 

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

Форум WinSCP:

WinSCP Doc: https://winscp.net/eng/docs/faq_su

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

sudo -s

[...]

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

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

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

0 голосов
/ 31 мая 2013

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

Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...