Bagaimana saya bisa memaksa SSH untuk memberikan kunci RSA alih-alih ECDSA?


16

Pada saat pertama kali mengakses server, bagaimana saya bisa memaksa SSH untuk memberikan saya kunci RSA dan secara otomatis menyimpannya jika pengguna menyetujuinya?

Saat ini ia menawarkan saya kunci ECDSA. Karena saya sudah tahu kunci RSA, saya lebih suka melihat kunci RSA disajikan pada saat ini.

Saya telah mencoba:

ssh -o RSAAuthentication=yes user@server

Sayangnya ini memberi saya kunci ECDSA dan Are you sure you want to continue connecting (yes/no)?pesannya.


Saya memiliki situasi yang sama. Server A. Klien B. Pada B: ssh A pertama akan meminta Anda untuk kunci. Pada Cleint C: ssh A pertama akan meminta Anda untuk passwrd, setelah gagal upaya untuk Klien C untuk menggunakan kunci ECDSA, saya melihat ini pada log A. Jika saya memuat kunci rsa pada C, maka ssh A akan terhubung dengan senang hati . Bagaimana saya mencegah C dari menggunakan kunci ECDSA sebagai upaya pertama?
Kemin Zhou

Jawaban:


14

Dengan menghapus algoritma ECDSA dari HostKeyAlgorithmsvariabel konfigurasi.

ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss user@server

Saya hanya menghapus semua algoritma ECDSA dari daftar default .

Anda bisa, tentu saja, memasukkannya ke dalam .ssh/configuntuk mesin itu:

Host: server
    HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss

Untuk OpenSSL, 1) tidak ada titik dua setelah host, dan 2) daftar default tampaknya telah berubah sejak Anda memposting ini. Coba HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-rsasaja.
cowlinator

6

Jangan gunakan RSA karena ECDSA adalah default baru.

Di server lakukan ini: ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub dan catat nomor itu.

Pada klien Anda dapat SSH ke host dan jika dan ketika Anda melihat nomor yang sama, Anda dapat menjawab prompt dengan Are you sure you want to continue connecting (yes/no)?tegas. Kemudian kunci ECDSA akan direkam pada klien untuk digunakan di masa mendatang.


3
ya tapi bagaimana jika saya memiliki aplikasi lama yang membutuhkan RSA untuk mempertahankan kompatibilitas sampai ada keputusan bisnis untuk memperbarui ke ECDSA?
Antusiasme

@RobertSiemer hanya poster pertanyaan asli yang dapat mengubah jawaban yang diterima. Saya tidak dapat melakukannya.
Antusiasme

1
H2ONaCl: ubah jawaban yang Anda terima. Yang ini tidak melakukan apa yang Anda minta. @enthusiasticgeek maaf, mixup.
Robert Siemer

Default (banding ke otoritas) dan baru (banding ke hal baru) tidak selalu berarti lebih baik. RSA masih dianggap kuat ... hanya bit ke 4096 jika Anda ingin lebih kuat (2048 mungkin segera usang). Dan jika Anda ingin EC yang baik, gunakan ed25519. ECDSA menyebalkan karena menggunakan kurva NIST yang lemah yang bahkan mungkin di-backdoor; ini sudah menjadi masalah yang sudah dikenal selama beberapa waktu. Jadi untuk dukungan sebelumnya, aktifkan RSA, dan untuk algo yang ideal, gunakan ed25519 ... selalu nonaktifkan DSA yang lama usang (alasan utama adalah ukuran kunci 1024 bit tetap) dan juga menonaktifkan ECDSA. Coba ssh-audit untuk lebih.
Peter

5

Ya, OK beralih ke ECDSA segera, tetapi sementara itu coba ini:

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 user@example.com

Ini memberikan "opsi konfigurasi yang buruk: fingerprinthash" pada sistem saya (OpenSSH_6.6.1p1).
Soren Bjornstad

1
@SorenBjornstad, FingerprintHashopsi tidak perlu, biarkan saja seluruh bagian itu.
Lucas

2

Saya baru saja menambahkan baris ini

HostKeyAlgorithms ssh-rsa

untuk

/etc/ssh/sshd_conf

dan itu berfungsi dengan baik di versi ini.

OpenSSH_7.7p2 ubuntu-4ubuntu2.2

1

Hanya untuk meningkatkan jawaban tumbleweed yang memiliki tautan mati di dalamnya untuk menemukan daftar algoritma yang lama.

Pertama-tama tentukan daftar algoritma. Untuk menemukan daftar yang lama, gunakan ssh -vv:

ssh -vv somehost

Dan cari 2 baris seperti "algoritma kunci host: ..." di mana yang pertama muncul sebagai tawaran server, dan yang kedua adalah klien. Atau untuk memilih 2 garis itu secara otomatis, coba ini (dan untuk keluar tekan ctrl + d):

ssh -vv somehost 2>&1 | grep "host key algorithms:"

Sekarang filter ke bawah ... Anda harus menghapus semua dss / dsa karena sudah lama usang, dan Anda juga ingin menghapus ecdsa (seperti yang saya lakukan), jadi misalnya jika Anda memiliki:

ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Anda harus berakhir dengan:

ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Sekarang edit konfigurasi Anda. Untuk konfigurasi Anda sendiri:

vim ~/.ssh/config

Untuk konfigurasi sistem yang luas:

sudo vim /etc/ssh/ssh_config

Tambahkan baris baru, baik secara global:

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

atau untuk host tertentu (tidak ideal untuk konfigurasi lebar server):

Host somehost
    HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Alih-alih daftar yang saya masukkan, tempelkan daftar yang Anda peroleh dari ssh -vvoutput, tidak termasuk bagian "algoritma kunci host:".


0

beberapa titik membingungkan apakah mungkin untuk menghapus algoritma kunci dari default yang ada - Kunci level tertinggi adalah kunci RSA-sha2 / 256/512 / ed25519 baru untuk keamanan terbaik menggunakan ssh-keygen -t ras -a -b 4096 -a 113 ke gen. Dukungan legacy rupanya membaca berita ssh bahwa ssh1 akan hilang sama sekali - kunci max 45 bit dan 96 bit yang juga terdepresiasi juga dihilangkan. Diperbaiki pada 128/1024 bit maks ditemukan dapat diretas. (poss NSA melakukan itu dan lumpuh / beralasan karena kode debug meninggalkan sangat diragukan bahwa menamakannya heartbleed) sehingga semua biaya tinggi membayar struktur kunci RSA aman harus dikerjakan ulang untuk mendukung dan menjaga standar yang lebih tinggi ke depan. atur kunci apa yang ingin Anda gunakan seperti yang dijelaskan di / etc / ssh / sshd_config coba lakukan 2 kunci auth 3 kunci juga berfungsi yaitu: sshd_config "AuthenticationMethods publickey, publickey, publickey" - pastikan ssh -Q kex listing cocok dengan server atau desktop A dan B sebagai contoh lakukan perbedaaan pada output mereka - dan pastikan algoritma pencarian kunci yang sama cocok. kunci ecdsa yang lebih baru dalam produksi juga lemah untuk tidak digunakan. atau get - keyexchange menolak akses aman sebagian. Banyak infoz baik hanya bersabar untuk mencarinya.


2
Bisakah Anda mencoba memecah dinding teks ini sehingga lebih mudah diikuti? Manfaatkan panduan pemformatan dan format kode dan isi file teks sebagai kode, dan jika itu akan membuat segalanya lebih jelas, letakkan di baris mereka sendiri. Saya akan dengan senang hati mengedit jawaban Anda sendiri jika saya bisa mengikutinya, tetapi saya tidak bisa.
Zanna

-5

Atau, jika Anda bersikeras memiliki pendekatan kunci RSA, Anda dapat mengetik ssh-keygen -t rsadi server yang Anda inginkan untuk SSH.

Itu seharusnya menghasilkan kunci publik dan pribadi RSA di bawah '~ / .ssh / id_rsa'. Sekarang yang perlu Anda lakukan adalah menyalin kunci publik di bawah $HOME/.ssh/authorized_keyssemua mesin yang Anda ingin ssh ke mesin di mana Anda menghasilkan kunci RSA Anda.

Dan kemudian duduk dan santai!


1
Anda menyadari bahwa pertanyaannya bukan tentang kunci sisi klien tetapi tentang kunci server?
0xC0000022L
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.