bagaimana SSH ke EC2 tanpa secara eksplisit menggunakan kunci pem?

21

Saya memiliki windows sebagai OS utama saya. Menggunakan VMware player, saya mengatur server Ubuntu 12.4 sebagai mesin tamu. Server Ubuntu memiliki pengguna "ubuntu".

Saya membuat instance EC2 baru + setup pem key. Dari mesin windows, ketika saya menggunakan kunci dempul + pem - saya bisa ssh.

Saya menambahkan kunci pem ke server VMware Ubuntu saya (/home/ubuntu/.ssh/) Selain itu, saya mengatur izin berikut: chmod 700 /home/ubuntu/.ssh chmod 600 /home/ubuntu/.ssh/*

Melalui server Ubuntu - saya mencoba untuk SSH ke instance EC2 tanpa keberhasilan: ssh ubuntu@EC2_IP Permission denied (publickey) . Jika saya secara eksplisit menggunakan kunci pem, itu berfungsi: ssh -i /home/ubuntu/.ssh/NAME.pem ubuntu@EC2_IP - Harap dicatat, bahwa saya harus menggunakan jalur langsung ke kunci, jika tidak, saya akan mendapatkan Warning: Identity file NAME.pem not accessible: No such file or directory. Permission denied (publickey).

Mohon saran. Terima kasih!

pengguna798562
sumber

Jawaban:

18

Secara default klien SSH akan mencari kunci bernama id_rsa, id_dsadan id_ecdsadalam ~/.ssh/. Jika kunci Anda tidak bernama seperti itu, Anda harus menentukannya di baris perintah dengan -iapa yang telah Anda lakukan, atau menentukannya di konfigurasi klien.

Anda dapat menambahkan sesuatu seperti ini ~/.ssh/configuntuk secara otomatis memilih kunci ini ketika SSHing ke EC2:

Host *.compute-1.amazonaws.com
    IdentityFile ~/.ssh/ec2_rsa
Mgorven
sumber
18

Tambahkan kunci pem EC2 ke SSH

ssh-add ~ / .ssh / KEY_PAIR_NAME.pem

nadavkav
sumber
Anda mungkin perlu memulai agen otentikasi: eval 'ssh-agent -s'
douglaslps
2

Bagaimana Anda memberi nama kunci pribadi Anda? Seharusnya memiliki nama file id_rsa default (ganti nama file pem ke /home/ubuntu/.ssh/id_rsa)

Andrei Mikhaltsov
sumber
itu disebut eldad.pem (nama default dari AWS). Saya menamainya menjadi id_rsa dan berhasil. apakah ada cara untuk menyimpannya di nama saat ini dan masih menggunakannya?
user798562
Yap, Daniel sudah menulis tentang hal itu dalam jawabannya :)
Andrei Mikhaltsov
1

Anda dapat menggunakan ssh-agentdan ssh-addmenghindari keharusan menentukan kunci pribadi secara eksplisit.

Anda dapat menempatkan perintah di .profileatau .bashrcjadi mereka dijalankan setiap kali Anda masuk. Anda dapat menemukan contoh skrip startup di bagian bawah posting ini .

David Levesque
sumber
Saya melakukan itu, tetapi ketika saya reboot - saya harus mengulanginya lagi. Adakah cara untuk menghindarinya?
user798562
Mengedit jawaban saya untuk memasukkan itu.
David Levesque
0

Klien ssh mencari identify fileberdasarkan konfigurasi yang diatur dalam /etc/ssh/ssh_config. Jadi Anda dapat menentukan file identitas di sana, dan ingat Anda dapat memiliki beberapa file identitas yang terdaftar di file konfigurasi klien ssh. Dari halaman ssh man -

    -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).

Untuk kunci RSA, misalnya, lokasi default adalah ~ / .ssh / id_rsa. Seperti yang disarankan Andrei Mikhaltsov, Anda dapat menempatkan kunci pribadi Anda di / home / ubuntu / ssh / id_rsa dan akan dapat terhubung tanpa menentukannya di baris perintah. Jika nama file itu sudah ada dan menyimpan kunci pribadi lain, Anda masih dapat menyesuaikan file konfigurasi klien ssh Anda pada IdentityFileparameter.

Daniel t.
sumber