यदि ssh- एजेंट में कुंजी नहीं है, तो ssh- स्लोगन पर ssh-add करना


10

जब मैं गनोम चला रहा होता हूं, तो ssh-agent पहचान लोड नहीं होने पर स्लोगन / ssh पर ssh-add चलाएगा। मैं दूरदराज के गोले पर इस व्यवहार की नकल करना चाहता हूं, लेकिन मुझे जो कुछ भी मिलता है वह लॉगिन पर ssh-add चलाने का सुझाव देता है। मैं केवल ssh-add चलाना चाहता हूं यदि मैं बाद में दूरस्थ शेल पर slogin / ssh चलाता हूं, न कि हर बार जब मैं लॉगिन करता हूं।

जवाबों:


9

मैंने बैश शेल के माध्यम से इसके लिए एक समाधान तैयार किया।

.Bashrc में जोड़ें:

check-ssh-add() {
if [ "$DESKTOP_SESSION" == "" ]; then
  if [[ `ssh-add -l` != *id_?sa* ]]; then 
    ssh-add -t 5h  ## 5 hour ssh-agent expiration
  fi
fi
}

slogin() {
check-ssh-add
/usr/bin/slogin $@
}

ssh() {
check-ssh-add
/usr/bin/ssh $@
}

scp() {
check-ssh-add
/usr/bin/scp $@
}

sftp() {
check-ssh-add
/usr/bin/sftp $@
}

7

वहाँ वास्तव में एक भी आसान तरीका है। ssh-add -lसही है (0) यदि कुंजियाँ हैं और झूठी हैं (1) अन्यथा, तो आपके पहले फ़ंक्शन को इसके साथ बदल दिया जा सकता है:

check-ssh-add() {
  if ! ssh-add -l >/dev/null; then
      ssh-add -t 5h
  fi
}

 


1

«यह एक इंटरैक्टिव सत्र» भाग जोड़ में भी सरल है

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id

0

ओपनएसएसएच के नए संस्करण पहले उपयोग पर एजेंट को कुंजी जोड़ सकते हैं, यदि आप AddKeysToAgent yesअपने में सक्षम करते हैं ~/.ssh/config

(मैंने इसे https://superuser.com/a/1114257/42546 से सीखा है । मुझे यकीन नहीं है कि विभिन्न StackExchange साइटों पर जवाब देने के लिए उचित StackOverflow शिष्टाचार क्या है।)

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