ssh कमांड लाइन सर्वर होस्ट कुंजी फिंगरप्रिंट निर्दिष्ट करें


15

sshकमांड लाइन (ओपनएसएसएच) का उपयोग करते हुए , क्या मैं सर्वर के होस्ट कुंजी फिंगरप्रिंट निर्दिष्ट कर सकता हूं?

यह wincp.com (जैसे) का उपयोग करके संभव है -hostkey="ssh-rsa 2048 AA:BB:CC...etc

मैंने एक-दो बार मैन पेज पढ़ा है, मैं माफी माँगता हूँ अगर मैंने वहाँ स्पष्ट याद किया है।

मैं केवल ऑटो को होस्ट कुंजी स्वीकार नहीं करना चाहता, और मैं उपयोगकर्ता को अपडेट करने के लिए आवश्यकता नहीं चाहता known_hosts, बल्कि कमांड लाइन पर किसी न किसी रूप में होस्ट कुंजी निर्दिष्ट करना चाहता हूं ।


-o UserKnownHostsFile एक अस्थायी फ़ाइल के साथ काम कर सकता है।
पे

जवाबों:


16

होस्ट कुंजी फ़िंगरप्रिंट को पास करने के लिए ओपनएसएसएच में कोई कमांड-लाइन विकल्प नहीं है।

आप (के रूप में एक ही प्रारूप के साथ एक अस्थायी फ़ाइल का उपयोग हालांकि कर सकते हैं known_hosts) और बनाने के sshउपयोग का उपयोग कर -o UserKnownHostsFile:

ssh -o "UserKnownHostsFile my_temp_known_host" host.example.com

मैन पेजों के लिए ( ) के लिए और ( ) के sshलिए देखें ।-ossh_configUserKnownHostsFile


आप का उपयोग करने पर भी विचार कर सकते हैं StrictHostKeyChecking yes


जैसा कि ऑटो ने कमांड लाइन से rsa कुंजी फिंगरप्रिंट को स्वीकार करने का सुझाव दिया है , आप एक छोटी स्क्रिप्ट लिख सकते हैं जो आपको इसे प्राप्त करने की अनुमति देगा:

#!/bin/bash

TEMPFILE=$(mktemp)
echo "$1" > $TEMPFILE

ssh -o "UserKnownHostsFile $TEMPFILE" ${@:2}

rm $TEMPFILE

यदि आप स्क्रिप्ट को कॉल करते हैं ssh_known_host, तो आप इसका उपयोग कर सकते हैं, पहले तर्क के रूप में कुंजी को पास करना:

ssh_known_host 'github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==' git@github.com

कोई सुराग क्यों -o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")काम नहीं करता है?
कैस्परल्ड

2
@kasperd संभवत: क्योंकि द्वारा बनाई गई fd को <()केवल एक बार पढ़ा जा सकता है, जबकि sshफ़ाइल को बार- बार पढ़ा जाता है।
मार्टिन प्रिक्रील

StrictHostKeyChecking का उपयोग करके आपके उत्तर और सलाह के लिए धन्यवाद। यह समाधान मेरे लिए काम करेगा।
पे

1
मैं संपादित करने का उल्लेख करना भूल गया कि स्क्रिप्ट समाधान आदमी के बीच के हमले से बचता है
RDP
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.