Masalah: Saya memiliki sekitar 20-30 ssh-agent
identitas. Sebagian besar server menolak otentikasi Too many failed authentications
, karena SSH biasanya tidak mengizinkan saya mencoba 20 kunci berbeda untuk masuk.
Saat ini, saya menetapkan file identitas untuk setiap host secara manual, menggunakan IdentityFile
dan IdentitiesOnly
direktif, sehingga SSH hanya akan mencoba satu file kunci, yang berfungsi.
Sayangnya, ini berhenti berfungsi segera setelah kunci asli tidak tersedia lagi. ssh-add -l
memperlihatkan saya jalur yang benar untuk setiap file kunci, dan mereka cocok dengan jalur di .ssh/config
, tetapi tidak berhasil. Rupanya, SSH memilih indentitas dengan tanda tangan kunci publik dan bukan dengan nama file, yang berarti bahwa file asli harus tersedia sehingga SSH dapat mengekstrak kunci publik.
Ada dua masalah dengan ini:
- itu berhenti bekerja segera setelah saya mencabut flash drive memegang kunci
- itu membuat agen meneruskan tidak berguna karena file kunci tidak tersedia pada host jarak jauh
Tentu saja, saya bisa mengekstrak kunci publik dari file identitas saya dan menyimpannya di komputer saya, dan di setiap komputer jarak jauh yang biasa saya masuki. Ini tidak terlihat seperti solusi yang diinginkan.
Yang saya butuhkan adalah kemungkinan untuk memilih identitas dari ssh-agent berdasarkan nama file, sehingga saya dapat dengan mudah memilih kunci yang tepat menggunakan .ssh/config
atau dengan melewati -i /path/to/original/key
, bahkan pada host jarak jauh yang saya masuki SSH. Akan lebih baik lagi jika saya bisa "memberi julukan" kunci sehingga saya bahkan tidak perlu menentukan path lengkap.
authorized_keys
file yang, tergantung pada kunci yang digunakan, menjalankan perintah yang berbeda, tanpa pernah mengizinkan akses shell langsung.Jawaban:
Kira saya harus menjawab pertanyaan saya sendiri, karena sepertinya tidak ada cara untuk meminta identitas dengan nama file.
Saya menulis skrip Python cepat dan kotor yang membuat file kunci publik
.ssh/fingerprints
untuk setiap kunci yang dimiliki agen. Saya kemudian dapat menentukan file ini, yang tidak mengandung kunci rahasia, menggunakanIdentityFile
dan SSH akan memilih identitas yang tepat dari agen SSH. Bekerja dengan sangat baik, dan memungkinkan saya menggunakan agen untuk sebanyak kunci pribadi yang saya inginkan.sumber
Lari
pada mesin jarak jauh untuk secara otomatis menghasilkan semua file kunci publik (dengan asumsi kunci publik di Anda
.ssh/config
dinamaiprivateKeyFileName.pub
dan tidak ada jalur tidak konsisten yang terlibat). Panggil kasuschown $USER .ssh/*
Andasudo
.sumber
Mengambil dari solusi yang diterima, dan dengan asumsi Anda hanya ingin menggunakan kembali identitas yang digunakan untuk mendapatkan akses ke server awal, maka sesuatu seperti:
sudah cukup.
sumber