मैं SSH को ECDSA के बजाय RSA कुंजी देने के लिए कैसे बाध्य कर सकता हूं?


16

पहली बार किसी सर्वर तक पहुंचने पर, मैं SSH को मुझे RSA कुंजी देने के लिए कैसे मजबूर कर सकता हूं और यदि उपयोगकर्ता ने अनुमोदन दिया है तो स्वचालित रूप से इसे स्टोर कर सकता है?

वर्तमान में यह मुझे ECDSA कुंजी प्रदान कर रहा है। क्योंकि मुझे पहले से ही RSA कुंजी पता है, मैं इस बिंदु पर प्रस्तुत RSA कुंजी देखना पसंद करूंगा।

मैंने कोशिश की है:

ssh -o RSAAuthentication=yes user@server

दुर्भाग्य से यह मुझे एक ECDSA कुंजी और Are you sure you want to continue connecting (yes/no)?संदेश देता है।


मेरी भी ऐसी ही स्थिति है। सर्वर ए क्लाइंट बी ऑन बी: ​​एसश ए सबसे पहले आपसे चाबी मांगेगा। क्लेइन्ट C पर: ssh A पहले आपको पासवार्ड के लिए कहेगा, ECDSA कुंजी के क्लाइंट C के लिए असफल प्रयास के बाद, मैंने इसे A के लॉग पर देखा। यदि मैं C पर rsa कुंजी दबाता हूं, तो ssh A खुशी से जुड़ जाएगा। । मैं पहले प्रयास के रूप में C को ECDSA कुंजी के उपयोग से कैसे रोकूं?
केमिन झोउ

जवाबों:


14

HostKeyAlgorithmsकॉन्फ़िगरेशन चर से ECDSA एल्गोरिदम को हटाकर ।

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

मैंने बस डिफ़ॉल्ट सूची से सभी ECDSA एल्गोरिदम को हटा दिया है ।

आप निश्चित रूप से, .ssh/configउस मशीन के लिए अपने में डाल सकते हैं :

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

OpenSSL के लिए, 1) होस्ट के बाद कोई कोलन नहीं है, और 2) डिफ़ॉल्ट सूची आपको पोस्ट करने के बाद से बदल गई लगती है। HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-rsaइसके बजाय कोशिश करें ।
काउललाइनर

6

RSA का उपयोग न करें क्योंकि ECDSA नया डिफ़ॉल्ट है।

सर्वर पर यह करें: ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub और उस नंबर को रिकॉर्ड करें।

क्लाइंट पर आप होस्ट को SSH कर सकते हैं और यदि और जब आप उसी नंबर को देखते हैं, तो आप तुरंत Are you sure you want to continue connecting (yes/no)?सकारात्मक जवाब दे सकते हैं । फिर ईसीडीएसए कुंजी भविष्य में उपयोग के लिए क्लाइंट पर दर्ज की जाएगी।


3
हाँ, लेकिन कैसे अगर मेरे पास एक पुराना एप्लिकेशन है, जिसे संगतता बनाए रखने के लिए RSA की आवश्यकता है, जब तक कि ecdsa को अपडेट करने के लिए कोई व्यावसायिक निर्णय नहीं है?
उत्साही

@RobertSiemer केवल मूल प्रश्न पोस्टर स्वीकृत उत्तर को बदल सकता है। मैं ऐसा करने में असमर्थ हूं।
उत्साही

1
H2ONaCl: कृपया अपना स्वीकृत उत्तर बदलें। यह वह नहीं करता है जो आपने मांगा था। @ सेंन्टेरिकेजेक सॉरी, मिक्सअप।
बजे रॉबर्ट सिएमर

डिफ़ॉल्ट (प्राधिकरण की अपील) और नया (नवीनता की अपील) जरूरी नहीं कि बेहतर हो। आरएसए अभी भी मजबूत माना जाता है ... यदि आप अधिक ताकत चाहते हैं तो बस 4096 तक बिट्स (2048 जल्द ही अप्रचलित हो सकता है)। और यदि आप एक अच्छा ईसी एल्गो चाहते हैं, तो ed25519 का उपयोग करें। ECDSA बेकार है क्योंकि यह कमजोर NIST घटता का उपयोग करता है जो संभवतः पिछले दरवाजे भी हैं; यह कुछ समय के लिए एक प्रसिद्ध समस्या रही है। तो विरासत समर्थन के लिए, आरएसए को सक्षम करें, और एक आदर्श अहंकार के लिए, ed25519 का उपयोग करें ... हमेशा डीएसए को अक्षम करें जो लंबे अप्रचलित है (एक प्रमुख कारण आकार 1024 बिट कुंजी निर्धारित है) और ईसीडीएसए को भी अक्षम करें। अधिक के लिए ssh- ऑडिट का प्रयास करें।
पीटर

5

हाँ, जल्द ही ECDSA पर जाएँ, लेकिन इस बीच यह कोशिश करें:

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

यह मेरे सिस्टम पर "खराब कॉन्फ़िगरेशन विकल्प: फिंगरप्रिंटश" देता है (OpenSSH_6.6.1p1)।
बजे सोरेन ब्योर्नस्टैड

1
@SorenBjornstad, FingerprintHashविकल्प अनावश्यक है, बस उस पूरे हिस्से को छोड़ दें।
लुकास

2

मैंने अभी इस लाइन को जोड़ा है

HostKeyAlgorithms ssh-rsa

सेवा

/etc/ssh/sshd_conf

और यह इस संस्करण में ठीक काम कर रहा है।

OpenSSH_7.7p2 ubuntu-4ubuntu2.2

1

बस गुंबद के जवाब को बेहतर बनाने के लिए जो एल्गोरिदम की पुरानी सूची खोजने के लिए इसमें एक मृत लिंक है।

पहले एल्गोरिदम की एक सूची पर निर्णय लें। पुरानी सूची खोजने के लिए, उपयोग करें ssh -vv:

ssh -vv somehost

और "होस्ट कुंजी एल्गोरिदम: ..." जैसी 2 पंक्तियों के लिए देखें, जहां पहले सर्वर की पेशकश प्रतीत होती है, और दूसरा क्लाइंट का है। या उन 2 लाइनों को स्वचालित रूप से बाहर निकालने के लिए, इसे आज़माएँ (और हिट ctrl + d से बाहर निकलने के लिए):

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

अब इसे नीचे फ़िल्टर करें ... आपको लंबे समय तक अप्रचलित रहने के बाद सभी dss / dsa वाले को निकाल देना चाहिए, और आप ecdsa (जैसा मैं करते हैं) निकालना चाहते हैं, इसलिए उदाहरण के लिए यदि आपके पास था:

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

आपको समाप्त करना चाहिए:

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

अब अपने विन्यास को संपादित करें। अपने स्वयं के विन्यास के लिए:

vim ~/.ssh/config

सिस्टम के लिए विस्तृत विन्यास:

sudo vim /etc/ssh/ssh_config

या तो विश्व स्तर पर एक नई पंक्ति जोड़ें:

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

या विशिष्ट होस्ट के लिए (सर्वर वाइड कॉन्फ़िगरेशन के लिए आदर्श नहीं):

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

मेरे द्वारा दर्ज की गई सूची के बजाय ssh -vv, "होस्ट कुंजी एल्गोरिदम:" भाग को शामिल न करते हुए, आउटपुट से प्राप्त सूची को चिपकाएँ ।


0

कुछ बिंदु भ्रामक हैं क्योंकि क्या मौजूदा एल्गोरिदम से कुंजी एल्गोरिदम को निकालना संभव है - उच्चतम-स्तर की चाबियाँ नई RSA-sha2 / 256/512 और ed25519 ssh-keygen -t ras -a -b 40b -a 113 का उपयोग करके सर्वोत्तम सुरक्षा के लिए कुंजी हैं जनन को। लिगेसी समर्थन जाहिरा तौर पर ssh समाचार पढ़ रहा है कि ssh1 पूरी तरह से चला जाएगा - इसकी 45 बिट और 96 बिट अधिकतम - डीएसए कुंजी भी मूल्यह्रास भी समाप्त हो जाएगी। 128/1024 बिट मैक्स पर इसका निर्धारण हैक करने योग्य पाया गया। (व्यापम एनएसए ने ऐसा किया और डिबग कोड के रूप में लंगड़ा / बहाना किया गया - अत्यधिक संदेह है कि यह नामकरण किया गया है) इसलिए सुरक्षित आरएसए कुंजी संरचनाओं का भुगतान करने वाले सभी उच्च लागत को समर्थन देने और उच्च मानकों को आगे रखने के लिए फिर से तैयार करना होगा। सेट करें कि आप किन कुंजियों का उपयोग करना चाहते हैं, जैसा कि / etc / ssh / sshd_config में वर्णित है, 2 मुख्य 3 कार्य करने का प्रयास करें अर्थात: sshd_config "AuthenticationMethods publickey, publickey, publickey" - सुनिश्चित करें कि ssh-q kex लिस्टिंग ए और बी सर्वर या डेस्कटॉप दोनों से मेल खाती है, उदाहरण के तौर पर उनके आउटपुट पर एक फर्क पड़ता है - और सुनिश्चित करें कि एक ही कुंजी आरेख एल्गोरिदम से मेल खाती हो। ecdsa चाबियाँ उत्पादन में नए हैं किना भी कमजोर चीनी का उपयोग नहीं कर रहे हैं। या प्राप्त करें - कीएक्सचेंज ने आंशिक पहुंच सुरक्षित संदेश को अस्वीकार कर दिया। अच्छी जानकारी के बहुत सारे रोगी इसे खोजते हैं।


2
क्या आप पाठ की इस दीवार को तोड़ने की कोशिश कर सकते हैं ताकि इसका पालन करना आसान हो? कृपया प्रारूपण गाइड और प्रारूप कोड और पाठ फ़ाइल सामग्री को कोड के रूप में उपयोग करें, और यदि यह चीजों को स्पष्ट कर देगा, तो उन्हें अपनी खुद की लाइनों पर रखें। यदि मैं इसका अनुसरण कर सकता हूं, तो मैं खुशी से आपके उत्तर को स्वयं संपादित करूंगा, लेकिन मैं ऐसा नहीं कर सकता।
Zanna

-5

या, यदि आप आरएसए कुंजी दृष्टिकोण होने पर जोर देते हैं, तो आप ssh-keygen -t rsaउस सर्वर पर टाइप कर सकते हैं जिसे आप एसएसएच करने का इरादा रखते हैं।

यह '~ / .ssh / id_rsa' के तहत RSA सार्वजनिक और निजी कुंजी जनरेट करना चाहिए। अब आपको बस $HOME/.ssh/authorized_keysउन सभी मशीनों के नीचे सार्वजनिक कुंजी की प्रतिलिपि बनाने की आवश्यकता है , जिनसे आप उस मशीन पर एसएसएच करना चाहते हैं, जिस पर आपने अपनी आरएसए कुंजी उत्पन्न की है।

और फिर वापस बैठो और आराम करो!


1
आपको एहसास है कि सवाल क्लाइंट-साइड कुंजी के बारे में नहीं था, लेकिन सर्वर कुंजी के बारे में था?
0xC0000022L
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.