Apa izin file yang tepat untuk file .pem ke SSH dan SCP

69

Saya telah mencoba SSH ke server AWS Ubuntu saya dan menyalin direktori ke mesin lokal saya. Sepanjang proses saya mengalami kesalahan izin file yang berbeda (tercantum di bawah).

Apakah ada satu izin file khusus yang diperlukan untuk file .pem yang memungkinkan saya untuk SSH dan SCP?
Atau apakah saya perlu mengubah izin file dua kali - satu kali untuk SSH dan satu lagi untuk SCP setelah saya masuk?

Berikut adalah perintah yang saya gunakan:

SSH:

ssh -i sentiment.pem [email protected]

Salin dari jarak jauh ke komputer lokal dengan:

scp [email protected]:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Saya menggunakan Mac OS X 10.7.5.


Percobaan dan kesalahan:

1.) Setelah saya mengunduh file .pem, izinnya ditetapkan, I THINK: 0644

-rw-r - r - @ 1 staf Toga 1692 18 Feb 21:27 sentiment.pem

Saya kemudian mencoba SSH melalui terminal dan menerima yang berikut:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

2.) Saya memperbarui izin file ke: chmod 660 sentiment.pem

Setelah pembaruan, izin ditetapkan ke:

-rw-rw ---- @ 1 staf Toga 1692 18 Feb 21:27 sentiment.pem

Saya kemudian mencoba SSH melalui terminal dan menerima yang berikut:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

3.) Saya memperbarui izin file ke: chmod 600 sentiment.pem

Setelah pembaruan, izin ditetapkan ke:

-rw ------- @ 1 staf Toga 1692 18 Feb 21:27 sentiment.pem

Saya kemudian mencoba SSH melalui terminal dan berhasil !!

4.) Sekarang masuk, saya menjalankan perintah untuk menyalin direktori jarak jauh ke komputer lokal saya dengan:

scp [email protected]:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Yang mengembalikan:

Permission denied (publickey).

Perintah SCP Diupayakan:

1.) menambahkan perintah -i dan mereferensikan file .pem:

scp -i sentiment.pem [email protected]: / home / ubuntu / sentimentfolder / Pengguna / Toga / Desktop / sentimentlocal

2.) menambahkan perintah -i, mereferensikan file .pem, dan mengubah pengguna untuk AWS menjadi pengguna-ec2:

scp -i sentiment.pem [email protected]: / home / ubuntu / sentimentfolder / Pengguna / Toga / Desktop / sentimentlocal

3.) menambahkan perintah -i, mereferensikan filem .pem, mengubah pengguna untuk AWS menjadi pengguna-ec2, dan menambahkan path file lengkap untuk lokasi file .pem:

scp -i / Pengguna /Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem [email protected]: / home / ubuntu / sentimen / Pengguna / Toga / Desktop / sentimentlocal

George Jester
sumber
Anda harus memberitahu scp untuk juga menggunakan file .pem
daniel kullmann
terima kasih telah memanggil @danielkullmann itu masuk akal. Saya mencoba kombinasi perintah yang mereferensikan file .pem secara langsung tetapi belum ada yang berhasil. Saya telah memperbarui pertanyaan dengan bagian berjudul: "Perintah SCP Mencoba" untuk membuat katalog tentang apa yang saya coba. Jika Anda perintah alternatif, beri tahu saya. Terima kasih.
George Jester

Jawaban:

110

Kunjungi di sini Cara Menghubungkan ke Amazon EC2 Secara Remote Menggunakan SSH atau merujuk di bawah.

Cara Menghubungkan ke Amazon EC2 dari Jarak Jauh Menggunakan SSH:

  1. Unduh file .pem.
  2. Di Amazon Dashboard pilih "Instances" dari bilah sisi kiri, lalu pilih instance yang ingin Anda sambungkan.
  3. Klik "Actions", lalu pilih "Connect"
  4. Klik "Terhubung dengan Klien SSH Mandiri"
  5. Buka jendela Terminal
  6. Buat direktori:

    # mkdir -p ~/.ssh
    
  7. Pindahkan file .pem yang diunduh ke direktori .ssh yang baru saja kita buat:

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. Ubah izin file .pem sehingga hanya pengguna root yang dapat membacanya:

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. Buat file konfigurasi:

    # vim ~/.ssh/config
    

    Masukkan teks berikut ke file konfigurasi:

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    Simpan file itu.

  10. Gunakan perintah ssh dengan nama host DNS publik Anda untuk terhubung ke instance Anda.
    misalnya:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    
Babin Lonston
sumber
1
Saya ingin tahu: Mengapa downvote?
erik
1
Saya TIDAK memilih ini. Ini sebenarnya terlihat membantu, tidak yakin apakah itu akan menyelesaikan masalah ketika saya perlu scp dari remote ke comp lokal saya. Saya akan mencoba ini dan melihat apa yang terjadi. Terima kasih Babin.
George Jester
Saat menyalin seluruh direktori dan isinya gunakan scp -r.
bahamat
1
Jawaban yang sangat bagus. Untuk menghindari pemindahan, Anda dapat menggunakan bendera ssh -i untuk menentukan kunci publik yang akan digunakan. misalnya: ssh -i jalur / ke / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34
15

chmod 400 {keyfile}.pem adalah apa yang diperintahkan amazon dan berfungsi.

John Zhang
sumber
Ini adalah jawaban yang saya cari, semua instruksi dalam jawaban yang diterima adalah praktik yang baik ... tetapi tidak relevan dengan masalahnya.
Sarung
3

Tampaknya Anda tidak seharusnya menggunakan alamat IP, tetapi nama host lengkap sistem dalam perintah SCP. Dokumen AWS menjelaskan hal ini di http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html di bawah bagian "Mentransfer File ke Linux / Unix Instans dari Linux / Unix dengan SCP".

Dan gunakan -runtuk menyalin direktori.

Dan perhatikan bahwa nama pengguna default berbeda untuk gambar yang berbeda:

Untuk Amazon Linux, nama pengguna default adalah ec2-user. Untuk RHEL5, nama pengguna sering roottetapi mungkin ec2-user. Untuk Ubuntu, nama pengguna adalah ubuntu. Untuk SUSE Linux, nama pengguna adalah root. Jika tidak, tanyakan kepada penyedia AMI Anda.

Jadi, gunakan perintah ini:

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem [email protected]:~/sentiment /Users/Toga/Desktop/sentimentlocal
daniel kullmann
sumber
1
Pengingat head hit yang baik bagi saya untuk menggunakan nama pengguna yang benar. Dapatkan kesalahan di atas dan saya harus ingat untuk menggunakan pengguna ubuntu pada instance ubuntu.
md_rasler
2

"Izin ditolak (publickey)" berasal dari server jauh, jadi Anda menggunakan kunci yang salah, itu tidak diizinkan untuk terhubung atau ada kesalahan ketik pada file otor_keys jarak jauh.

maedox
sumber
2
chmod 0400 pemfile.pem

dan

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name
harsha konreddy
sumber
3
Tolong jelaskan sshperintah Anda (dan juga berikan referensi, jika mungkin). BTW, chmod 400diberikan dalam jawaban sembilan bulan lalu.
Scott