Menggunakan SSH Private Key yang Sama di Beberapa Mesin

23

Saya punya repo Github yang ingin saya akses dari dua mesin Linux yang berbeda.

Untuk mesin pertama, saya mengikuti instruksi Github untuk membuat kunci SSH, dan menambahkan kunci publik yang dihasilkan ke Github. Klien ini berfungsi dengan baik.

Untuk klien kedua, saya menyalin /home/{user}/.ssh/id_rsafile dari klien pertama. Saya pikir ini mungkin yang harus saya lakukan, tetapi ketika saya mencoba untuk terhubung saya mendapatkan 'Izin ditolak (publickey).'

Apa yang saya lewatkan?

Yarin
sumber

Jawaban:

32

Kunci SSH yang sama harus dapat digunakan dari banyak klien. Saya memiliki kunci SSH yang berbeda untuk jaringan yang berbeda dan sebenarnya disimpan pada drive USB terenkripsi yang saya gunakan dari beberapa komputer yang berbeda tanpa masalah.

SSH sangat pilih-pilih tentang izin file jadi saya pertama-tama akan memeriksa semua izin dari /home/{user}semua jalan ke id_rsafile itu sendiri.

SSH tidak terlalu peduli dengan izin menulis kelompok atau dunia, jadi pastikan Anda chmod go-wdirektori home Anda dan ~/.sshdirektori untuk pemula. Saya juga memastikan mereka dimiliki oleh pengguna Anda chown ${USER}:${USER}.

Untuk kunci SSH itu sendiri saya chmod 600mereka ...

Jika Anda mau, saya punya info tambahan tentang bagaimana saya mengelola kunci SSH saya dalam jawaban saya untuk pertanyaan SSH lainnya.

Jeremy Bouse
sumber
3
Itu adalah izin- Tidak perlu rep untuk membatalkan tetapi terima kasih banyak
Yarin
6

Jika Anda mendapatkan izin yang ditolak dari Github, bisa jadi itu tidak mengambil file kunci SSH yang Anda salin, melainkan sistem default. Cara mudah untuk melakukannya adalah dengan membuat ~/.ssh/configfile yang bagus dan memasukkan yang berikut ini di dalamnya:

Host github.com
  Hostname      github.com
  User          git
  IdentityFile  ~/.ssh/yourkeyfile

Ini akan memaksa klien SSH Anda untuk menggunakan kunci itu hanya untuk github.com.

Semoga ini membantu.

vmfarms
sumber
2
Tidak perlu rep untuk membatalkan tetapi terima kasih
Yarin
1

Saya tahu ini sudah tua, tetapi saya pikir saya akan menunjukkan bahwa Anda juga perlu menyalin kunci publik ke klien kedua

(atau hitung ulang dengan ssh-keygen -y -f ~ / .ssh / id_rsa_ ..> ~ / .ssh / id_rsa ... pub)

Dari [1]:

  1. Metode Otentikasi Kunci Publik: "publickey"

    Satu-satunya 'nama metode' otentikasi yang DIBUTUHKAN adalah otentikasi "publickey"
    . Semua implementasi HARUS mendukung metode ini;
    namun, tidak semua pengguna perlu memiliki kunci publik, dan sebagian besar
    kebijakan lokal sepertinya tidak memerlukan otentikasi kunci publik untuk semua
    pengguna dalam waktu dekat.

    Dengan metode ini, kepemilikan kunci pribadi berfungsi sebagai
    otentikasi. Metode ini berfungsi dengan mengirimkan tanda tangan yang dibuat
    dengan kunci pribadi pengguna. Server HARUS memeriksa apakah kuncinya
    adalah autentikator otentik untuk pengguna, dan HARUS memeriksa apakah
    tanda tangan itu valid. Jika keduanya ditahan, permintaan otentikasi HARUS
    diterima; kalau tidak, HARUS ditolak. Perhatikan bahwa server MUNGKIN
    memerlukan otentikasi tambahan setelah otentikasi berhasil.

Klien ssh Anda memulai otentikasi dengan mengirimkan kunci publik (tanda tangan yang dirujuk dalam huruf tebal di atas) ke server. Server, jika kunci publik adalah kunci yang diotorisasi, mengirimkan ID sesi acak kembali ke klien Anda. Klien Anda kemudian menyandikan ID sesi itu dengan kunci pribadi dan mengirimkannya kembali ke server. Server menerjemahkan kode sesi itu menggunakan kunci publik, dan jika cocok dengan ID sesi asli, maka otentikasi klien Anda.

[1] [ http://www.openssh.org/txt/rfc4252.txt[[1]

Gereja Yakub
sumber
0

Mungkin karena Anda tidak menyalin izin file pada klien kedua.
Tetapi kunci privat adalah privat , cara yang benar adalah membuat kunci privat baru pada klien kedua dan kemudian menambahkan kunci publiknya ke Github

radius
sumber
Saya berencana melakukan 1 keypair-per-pengguna di setiap klien mutliple masing-masing pengguna. Tetapi sepasang kunci untuk setiap klien dari masing-masing pengguna sepertinya bagi saya sepertinya akan lepas kendali ...?
Yarin
Jika Anda menggunakan kunci pribadi yang sama untuk setiap pengguna di setiap mesin, sepertinya OK. Cukup periksa izin jika Anda menyalin menggunakan scp dengan -p flag itu harus ok
radius