как SSH к EC2 без явного использования ключа pem?

21

У меня есть Windows в качестве основной ОС. Используя проигрыватель VMware, я установил сервер Ubuntu 12.4 в качестве гостевой машины. У сервера Ubuntu есть пользователь "Ubuntu".

Я создал новый экземпляр EC2 + ключ настройки. Из машины windows, когда я использую putty + ключ pem - я могу ssh.

Я добавил ключ pem на свой сервер VMware Ubuntu (/home/ubuntu/.ssh/). Кроме того, я установил следующие разрешения: chmod 700 /home/ubuntu/.ssh chmod 600 /home/ubuntu/.ssh/*

Через сервер Ubuntu - Я пытался SSH к экземпляру ec2 без успеха: ssh ubuntu@EC2_IP Permission denied (publickey) . Если я явно использую ключ pem, он работает: ssh -i /home/ubuntu/.ssh/NAME.pem ubuntu@EC2_IP - Обратите внимание, что я должен использовать прямой путь к ключу, в противном случае я получу Warning: Identity file NAME.pem not accessible: No such file or directory. Permission denied (publickey).

Пожалуйста, порекомендуйте. Благодарность!

user798562
источник

Ответы:

18

По умолчанию клиент SSH будет искать ключи по имени id_rsa, id_dsaи id_ecdsaв ~/.ssh/. Если ваш ключ не назван так, вам нужно указать его в командной строке с помощью-i как вы делали, либо указать его в конфигурации клиента.

Вы можете добавить что-то вроде этого, чтобы ~/.ssh/configавтоматически выбирать этот ключ при SSHing к EC2:

Host *.compute-1.amazonaws.com
    IdentityFile ~/.ssh/ec2_rsa
mgorven
источник
2

Как вы называете свой закрытый ключ? У него должно быть имя файла по умолчанию id_rsa (переименуйте файл pem в /home/ubuntu/.ssh/id_rsa)

Андрей Михальцов
источник
он называется eldad.pem (имя по умолчанию от AWS). Я переименовал его в id_rsa, и это сработало. Есть ли способ сохранить его в текущем имени и по-прежнему использовать его?
user798562
Да, Даниэль уже писал об этом в своем ответе :)
Андрей Михальцов
1

Вы можете использовать ssh-agentи, ssh-addчтобы избежать необходимости явно указывать закрытый ключ.

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

Дэвид Левеск
источник
Я сделал это, но когда я перезагружаюсь - мне нужно делать это снова и снова. Есть ли способ избежать этого?
user798562
Отредактировал мой ответ, чтобы включить это.
Дэвид Левеск
0

Клиент ssh ищет на identify fileоснове конфигурации, установленной в /etc/ssh/ssh_config. Таким образом, вы можете указать там файл идентификации и помнить, что в конфигурационном файле клиента ssh может быть несколько файлов идентификации. Со страницы руководства ssh -

    -i identity_file
         Selects a file from which the identity (private key) for public key authentication is read.  The default is ~/.ssh/identity
         for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol version 2.  Identity files may also
         be specified on a per-host basis in the configuration file.  It is possible to have multiple -i options (and multiple identiâ
         ties specified in configuration files).

Например, для ключа RSA местоположение по умолчанию - ~ / .ssh / id_rsa. Как предположил Андрей Михальцов, вы можете поместить свой закрытый ключ в / home / ubuntu / ssh / id_rsa и сможете подключиться, не указав его в командной строке. Если это имя файла уже существует и содержит другой закрытый ключ, вы все равно можете настроить файл конфигурации клиента ssh в IdentityFileпараметре.

Даниил Т.
источник