У меня есть экземпляр Ubuntu, который я запускаю в Azure. Я использую его последние 6 месяцев или около того, чтобы повысить свои навыки администратора Linux-новичка. Вчера я настраивал развертывание Capistrano на этом сервере, когда мой ключ ssh внезапно перестал работать. В прошлом я видел Permission denied
пытаясь подключиться к ящику по ssh, я только что прочитал мой закрытый ключ ключевому агенту, и он снова заработал. Я никогда не был уверен Зачем ключ перестал работать, но так как я мог исправить это без особых хлопот, и это происходило не очень часто, я не придал этому большого значения. Однако вчера мне не удалось решить проблему таким образом, и с тех пор я бился головой, пытаясь понять проблему.
Вот шаги, которые я сделал и что пробовал:
ssh azure-southerneer
Соответствующая запись в моем ~ / .ssh / config:
Host azure-southerneer
Hostname southerneer.cloudapp.net
User azureuser
IdentityFile ~/.ssh/azure-wp-eric.key
IdentitiesOnly yes
ServerAliveInterval 300
StrictHostKeyChecking no
Permission denied (publickey).
Если я запустил его с флагом -v, вот что я получу:
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kirkham/.ssh/config
debug1: /Users/kirkham/.ssh/config line 27: Applying options for azure-southerneer
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug1: Connecting to southerneer.cloudapp.net [191.237.4.63] port 22.
debug1: Connection established.
debug1: identity file /Users/kirkham/.ssh/azure-wp-eric.key type -1
debug1: identity file /Users/kirkham/.ssh/azure-wp-eric.key-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 77:6f:e6:84:ca:09:04:83:fd:37:96:3f:d3:2a:77:a6
debug1: Host 'southerneer.cloudapp.net' is known and matches the RSA host key.
debug1: Found key in /Users/kirkham/.ssh/known_hosts:78
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/kirkham/.ssh/azure-wp-eric.key
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
Какого черта ?! Он пытается выбрать правильный ключ, но ему это больше не нравится ?!
sudo apt-get update
на сервере вчера утром, но я мог нормально работать по ssh в течение всего дня при тестировании развертывания capistrano, так что это, похоже, не вызвало проблемы.На данный момент я на грани того, что нужно проверить. Я, очевидно, не очень хорошо разбираюсь в устранении проблем с ssh, поэтому я медленно просматриваю статьи, пытаясь найти то, что мне не хватает. Я не знаю способа методично выяснить, что я делаю не так, что меня как разработчика действительно беспокоит. Я что-то не замечаю? Есть ли еще что-нибудь, чтобы убедиться, что я на правильном или неправильном пути? Кто-нибудь еще сталкивался с подобными проблемами на виртуальных машинах Ubuntu или Azure? Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию для диагностики проблемы. Пожалуйста помоги!
Я осознаю свою ошибку. Спасибо @kasperd за то, что помог мне разобраться. Я последовал за Инструкции по созданию SSH в Azure буквально. Когда я сгенерировал свой ключ, я использовал эту команду
openssl req -x509 -key ~/.ssh/id_rsa -nodes -days 365 -newkey rsa:2048 -out myCert.pem
который генерирует новый ключ, срок действия которого истекает через 365 дней. Так получилось, что вчера был тот 365-й день, а это значит, что мой ключ больше не работает. Поскольку это был единственный ключ к виртуальной машине, я думаю, я облажался? Вроде как. Тьфу.
Обновить: Согласно комментариям @kasperd, тот факт, что мой сервер перестал разрешать мне SSH ровно через год после его настройки, может быть просто сумасшедшим совпадением. Благодаря беседа в ветке обсуждения на сайте документации Azure я обнаружил, что виртуальные машины Linux Azure, созданные с помощью галереи, загружаются с помощью Microsoft Azure Linux Agent, который позволяет администраторам сбросить SSH через командную строку (например, Powershell). Так что, хотя мне сложно переключиться на Windows, я смог выполнить шаги и сбросить параметры SSH на моей виртуальной машине. К сожалению, мне все еще не удавалось подключиться к моей машине по SSH. Очевидно, я сделал что-то радикальное с моей машиной, что не охватывалось параметрами сброса, но для пользователей с менее серьезными случаями, надеюсь, они могут перейти по некоторым из этих ссылок, чтобы исправить свою ситуацию.