Я не могу подключиться к своему экземпляру GCP по ssh. Когда я связался со службой поддержки, они сказали, что sshguard блокирует запрос, и попросили меня включить -
#! /bin/bash
sudo apt-get remove --auto-remove sshguard
sudo apt-get purge --auto-remove sshguard
в пользовательских метаданных под ключом startup-script.
Я перезапускал несколько раз, но не работает. Когда я пытаюсь подключиться к этому экземпляру по ssh, он говорит, что соединение отклонено на порту 22. Подозревая, что ssh не запущен, я также попытался добавить
sudo service ssh start
в сценарии запуска, но не работает.
Я уже проверил правила брандмауэра, и я запускаю ubuntu-14.04. Я тоже пробовал оболочку gclod и web ssh, но ничего не работает.
Сначала мы должны убедиться, что демон OpenSSH запущен и может отвечать на соединения. Это означает, что локальный брандмауэр на экземпляре не запрещает подключения SSH или что демон SSH не контролируется TCP Wrapper или SSH Guard.
Вы можете проверить ответ от демона SSH с помощью net cat (команда nc), telnet или nmap на порту 22 из Cloud Shell. Возможно, вам придется установить пакеты в сеансе Cloud Shell. это пример установки инструмента NetCat:
sudo apt-get install -y netcat
nc <instance IP> 22
Если OpenSSH запущен и не заблокирован, вы должны получить ответ, показывающий версию OpenSSH демона.
Чтобы проверить локальный брандмауэр, было бы интересно остановить iptables в вашем сценарии запуска с помощью команды:
Service iptables stop
В случае, если SSH будет контролироваться TCP Wrapper, записи будут добавлены в файлы /etc/hosts.allow и /etc/hosts.deny. Вы можете очистить эти файлы в сценарии запуска, сохранив их в качестве резервных копий:
cp -p /etc/hosts.allow /etc/hosts.allow.bak`date +%Y%m%d_%H%M`
cp -p /etc/hosts.deny /etc/hosts.deny.bak`date +%Y%m%d_%H%M`
> /etc/hosts.allow
> /etc/hosts.deny
Вы пытались запустить демон SSh в сценарии запуска, и это нормально, но обратите внимание, что команду sudo нельзя использовать в сценарии запуска, поскольку он выполняется с учетными данными root. В сценарии запуска все команды, выданные с помощью sudo, отклоняются.
Затем вы можете установить следующий сценарий запуска и перезагрузить экземпляр:
#! /bin/bash
apt-get remove --auto-remove sshguard
apt-get purge --auto-remove sshguard
service iptables stop
cp -p /etc/hosts.allow /etc/hosts.allow.bak`date +%Y%m%d_%H%M`
cp -p /etc/hosts.deny /etc/hosts.deny.bak`date +%Y%m%d_%H%M`
> /etc/hosts.allow
> /etc/hosts.deny