Ошибка доступа к корню виртуальной машины через PuTTy

578
PeacockRider

Я хочу получить доступ к корню моей виртуальной машины vSphere ESXi 5.5 Ubuntu через PuTTy. Поэтому я загрузил публичный IP-адрес виртуальной машины и попробовал SSHing через порт 22.

Это дало следующую ошибку:

PuTTy fatal-network error

Я вошел в файл конфигурации sshd и изменил порт с 22 на 443 и попытался снова подключиться через ssh через порт 443, но получил сеанс терминала, где я ничего не мог набрать.

Я снова изменил порт в файле конфигурации на порт 80, и попытался снова через PuTTy. На этот раз я получил еще одну PuTTy фатальную ошибку.

PuTTy fatal error-server closed

Кто-нибудь здесь обходил эту проблему?

0
Обычно вы входите в систему как root с консоли, а не удаленно, и, скорее всего, по умолчанию запрещены удаленные подключения от пользователя root. При удаленном подключении вы должны войти в систему как обычный пользователь и использовать sudo для выполнения любых действий от имени пользователя root. Herb Wolfe 7 лет назад 1
В Ubuntu по умолчанию нет пользователя root * пароль *. Journeyman Geek 7 лет назад 0
@JourneymanGeek У него есть пользователь root, он просто отключен из-за отсутствия действительного пароля. В каждой системе Linux есть пользователь root, как описано, например, в [Всегда ли у учетной записи root UID / GID 0?] (Https://superuser.com/a/626845/53590). Может быть или не быть сопоставление * username *, но пользователь существует в любом случае. a CVn 7 лет назад 0
Я думаю, что что-то отвечает на порт 80, но он не взаимодействует должным образом с протоколом SSH. Если вы сообщите PuTTY, что хотите подключиться по протоколу Telnet, а не по SSH, вы, вероятно, получите другие и более полезные результаты. (Даже тогда ваши результаты, вероятно, будут не очень полезны, если вы не знакомы с командами протокола HTTP.) TOOGAM 7 лет назад 0

2 ответа на вопрос

2
a CVn

Поскольку вы ничего не говорите, я собираюсь предположить, что у вас есть относительно стандартная установка Ubuntu на этой виртуальной машине.

Это немного запутывает воду, когда вы говорите, что используете «публичный» IP-адрес виртуальной машины, потому что это может означать несколько разных вещей.

Однако стоит отметить одну вещь: ваша первоначальная ошибка («Ошибка сети: соединение отклонено» при попытке подключения к порту 22) говорит вам, что вы смогли подключиться к системе, работающей внутри виртуальной машины, и эта система сказала, что ничего не слушает на конкретном IP-адресе и комбинации портов, на которой вы его достигли.

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

Используйте консоль VM для входа в систему и проверьте, работает ли сервер SSH. В данный момент у меня нет удобной системы Ubuntu, но в терминале это должно быть похоже на

$ service sshd status 

Это может называться что - то вроде ssh, ssh-server, openssh-serverили что - то вдоль этих линий, а не sshd, но автодополнению на ssh(типе sshtab) должно заставить вас закрыть. Вам может понадобиться sudoэто, например sudo service sshd status, но я думаю, что обычный доступ пользователя должен быть достаточным для получения отчета о состоянии службы (работает / остановлен).

Если SSH-сервер не запущен или даже не установлен, это объясняет, почему вы получили ошибку «Отказано в соединении». Установите SSH-сервер, используя что-то вроде:

$ sudo apt-get -u install openssh-server 

Убедитесь, что список устанавливаемых пакетов выглядит нормально, и подтвердите. Сервер SSH будет запущен в конце процесса установки.

Теперь посмотрите на / etc / ssh / sshd_config. Он будет иметь ноль или более Portи ListenAddressдирективы, дающие IP-адреса или номера портов (по умолчанию номер порта равен 22, если он не указан, и сервер будет прослушивать все IP-адреса, если вы явно не укажете это иначе). Это IP-адрес и порт, к которому нужно подключиться.

Если IP-адрес (а) не указан, ip addr showвам будут показаны сетевые интерфейсы внутри ВМ и их соответствующие IP-адреса. Это те, которые сервер SSH будет прослушивать.

Вооружившись этой информацией, выполните все магические заклинания, необходимые для подключения PuTTY к этой комбинации IP-адреса и порта. (Это может включать, например, пробивание дыры или настройку переадресации портов в NAT или брандмауэре.)

Как только это будет сделано, вы сможете подключиться с помощью PuTTY и получить сеанс терминала в качестве непривилегированного пользователя на виртуальной машине Ubuntu. Оттуда, используйте sudoдля повышения ваших привилегий по мере необходимости, так же, как если бы вы сидели перед физической системой.

Я рекомендую настроить проверку подлинности открытого ключа, и я очень рекомендую против позволяя корень напрямую войти в систему . Однако, если вам абсолютно необходимо разрешить root для прямого входа в систему, отредактируйте / etc / ssh / sshd_config и укажите PermitRootLogin yes, затем sudo passwd rootи дайте rootу хороший пароль и перезапустите демон SSH. Опять же, я не рекомендую это.

С этим из пути, что было проблемой с вашим подключением к портам 80 и 443? Порт 80 является портом по умолчанию для HTTP, а порт 443 является портом по умолчанию для HTTPS. Если веб-сервер работает, вероятно, он прослушивает оба этих порта, и при подключении он будет ожидать HTTP-запросов; в случае порта 443 после согласования SSL. Конечно, можно вручную выдавать HTTP-запросы, но это не сеанс входа в систему терминала, а оболочка. В общем, подключение к случайным портам (даже известным портам) вряд ли даст вам результат, к которому вы стремитесь.

Я бы добавил, что некоторые более новые версии запускают systemd, а не upstart, поэтому команды могут немного отличаться. Journeyman Geek 7 лет назад 0
@JourneymanGeek На самом деле, я думаю, что `service sshd status` - это то, как вы делаете это с systemd. Это, безусловно, в Debian Jessie, который определенно * не * использует Upstart. a CVn 7 лет назад 0
Служба несколько устарела в дистрибутивах, которые делают systemd - его systemctl. Вы получите предупреждение для многих команд, используя `service` Journeyman Geek 7 лет назад 0
@JourneymanGeek Хороший вопрос. OP не уточнил, какой выпуск Ubuntu, поэтому в любом случае подробности будут немного догадываться. a CVn 7 лет назад 0
-1
shubham0d

внутри машины с Ubuntu откройте / etc / ssh / sshd_config и измените PermitRootLogin на yes.

# Authentication:  LoginGraceTime 120  PermitRootLogin yes StrictModes yes 
Вам также необходимо настроить какой-либо метод аутентификации, учитывая, что Ubuntu не дает `root` действительный пароль при установке по умолчанию. Так что либо установите аутентификацию с открытым ключом, либо войдите в учетную запись с привилегиями sudo и выполните `sudo passwd root`, чтобы получить root ** хороший ** пароль. a CVn 7 лет назад 0
Это также * ужасная * идея разрешить удаленный вход в систему root - особенно без других методов безопасности, таких как аутентификация на основе ключей. Journeyman Geek 7 лет назад 0
Я предполагаю, что он уже установил пароль root. shubham0d 7 лет назад 0