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 Todo@54.555.555.555

Salin dari jarak jauh ke komputer lokal dengan:

scp Todo@54.555.555.555:/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 Todo@54.555.555.555:/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 Todo@54.555.555.555: / 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 ec2-user@54.555.555.555: / 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 ec2-user@54.555.555.555: / home / ubuntu / sentimen / Pengguna / Toga / Desktop / sentimentlocal


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
    

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.


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 ubuntu@ec2-xx-xx-xx-xx.compute-x.amazonaws.com:~/sentiment /Users/Toga/Desktop/sentimentlocal

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.


2
chmod 0400 pemfile.pem

dan

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name

3
Tolong jelaskan sshperintah Anda (dan juga berikan referensi, jika mungkin). BTW, chmod 400diberikan dalam jawaban sembilan bulan lalu.
Scott
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.