Назад | Перейти на главную страницу

Как предоставить временный доступ к серверу?

Я нанял удаленного консультанта для настройки моих серверов. Я не уверен на 100% в том, чтобы дать ему пароль root и позволить ему делать на серверах все, что он хочет. В идеале я хочу видеть все, что он делает с моими серверами (в реальном времени), а также найти способ не сообщать ему пароль root.

Есть ли какие-нибудь передовые методы, позволяющие удаленному консультанту получить доступ к вашему серверу?

РЕДАКТИРОВАТЬ: Чтобы уточнить, я хочу сделать своего рода демонстрацию экрана с консультантом. Есть ли какой-либо метод, с помощью которого его команды проходят через мою учетную запись без получения пароля?

PS: Мои серверы на Ubuntu 9.10

Вместо того, чтобы предоставлять ему пароль root, используйте sudo.

Если вы хотите видеть все, что он делает в реальном времени как суперпользователь, ознакомьтесь с судош2. Из документов:

Sudosh - это фильтр оболочки аудита, который может использоваться как оболочка входа в систему. Судош записывает все нажатия клавиш и вывод и может воспроизводить сеанс как на видеомагнитофоне.

«Все нажатия клавиш» включают в себя нажатия клавиш с обратного пробела, символы удаления, «стираемое слово» BASH и т. Д. Вы можете наблюдать за чьими-то смущающими опечатками и исправлениями и т. Д.

Sudosh будет поддерживать системный журнал, и вы можете отправлять журналы на удаленный сервер системного журнала. Это гарантирует, что пользователь не сможет стереть все копии журналов аудита.

Обратите внимание, что исходный проект судошь (первая версия) была заброшенный его автор. судош2 жив-здоров.

Вы можете позволить ему подключиться к обычной учетной записи, а затем контролировать его сеанс SSH. На мой взгляд, решение на основе экрана является лучшим и позволит вам заниматься «парным» системным администрированием. Например, он может вводить команды sudo, а вы вводите пароль, если он нужен.

P.S. Если вы используете screen, это не значит, что вам также не следует использовать судош2 или другие решения.

Это действительно зависит от того, какой уровень доступа вы хотите предоставить ему / ей. Я бы никогда не включил удаленный вход в систему root. Только «обычные» учетные записи должны иметь удаленный доступ, затем настройте sudo для всего, что нужно этому человеку.

Во-первых, у вас должны быть четко определены цели того, что вы хотите, чтобы он делал. Как только эти цели определены, вы можете предоставить ему уровень доступа, необходимый для достижения этих целей.

Это как бросить мою машину в ремонтную мастерскую и сказать им «починить». Следующее, что вы знаете, у меня есть счет на тысячи долларов, и они сделали то, чего я не хотел и о чем не просил.

Я добавляю еще один, другой ответ в ответ на ваше обновление.

Используя экран GNU, вы можете поделиться экраном с другим пользователем. Это означает, что он может вводить команды, и вы видите все, что он набирает. Вы можете вводить команды, и он может видеть, что вы вводите. Когда ему будет предложено ввести пароль, вы можете ввести пароль, но содержимое пароля не выводится на экран (Примечание: хотя текст не выводится на экран, я не уверен, сможет ли другой пользователь получить доступ для ваших нажатий клавиш каким-либо другим способом, или иметь доступ к буферу нажатия клавиш и т. д.).

Больше информации на http://www.debian-administration.org/article/Using_GNU_screen%27s_multiuser_feature_for_remote_support

Другое предложение: заранее измените пароль root на временный. Когда он уйдет, восстановите пароль root до исходного пароля.

Если вы разрешаете доступ к вашему серверу только с открытым ключом, но без пароля для входа, вы можете в любой момент отозвать право доступа, удалив ключ, который вы дали консультанту.

Как предлагал Кристиан Чупиту, на машине экран GNU должен обеспечивать все необходимые функции. Если вы хотите добавить дополнительного комфорта, вам может помочь Sudosh2, но ваша история оболочек и распечатка экрана могут помочь вам воспроизвести команды позже ...

Я нашел действительно классный способ предоставить одноразовый доступ другому пользователю ... путем совместного использования вашей собственной сессии.

Это решение основано на сопроцессы bash. Идея такая:

  1. ты ssh на сервер, используя ваши учетные данные
  2. начать nc список серверов на порту 2222
  3. соединить два сеанса: всякий раз, когда кто-либо подключается к 2222, они фактически отправляют команды в открытый сеанс ssh
  4. опубликуйте свой порт 2222 в Интернете, используя тот же клиент ssh

Подписывайтесь на меня :)

Публикация открытого сеанса SSH на порт 2222

Запустите сопроцесс ssh и опубликуйте его ввод-вывод на локальном порту 2222:

$ coproc ssh user@server -tt
$ eval "exec nc -kl 0.0.0.0 2222 <&${COPROC[0]} >&${COPROC[1]}"

Установите [ngrok]. Получите токен авторизации со своего сайта:

$ npm install ngrok -g
$ ngrok authtoken <token>  # grab it from their website: 

Опубликуйте свой порт 2222 в Интернете:

$ ngrok tcp 2222
Forwarding tcp://0.tcp.ngrok.io:16135 -> localhost:2222 

Теперь скажите другу подключиться к серверу с помощью telnet:

$ telnet 0.tcp.ngrok.io 16135

Не оставляйте соединение открытым слишком долго; это совсем не безопасно! :)

Улучшение: сотрудничество

Теперь давайте посмотрим, что ваш друг делает на этом сервере, используя общие сеансы tmux. Как это:

$ ssh user@host -t -- tmux new -As shared-session

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

$ coproc ssh user@server -tt -- tmux new -As shared-session
$ eval "exec nc -kl 0.0.0.0 2222 <&${COPROC[0]} >&${COPROC[1]}"
$ ngrok tcp 2222
Forwarding tcp://0.tcp.ngrok.io:16135 -> localhost:2222 

теперь вы подключаетесь к этому сеансу, чтобы посмотреть, что там делают люди:

$ ssh user@server -t -- tmux new -As shared-session

теперь скажи своему другу подключиться к нему

$ telnet 0.tcp.ngrok.io 16135

Смотри внимательно :) Как он начинает печатать rm -rf /*, закройте первое окно терминала!

Улучшение: автоматический перезапуск

Если сеанс завершается, вы можете автоматически перезапустить его. Положи все coproc && eval вещь в while true ; do ... done петля