SSH एजेंट के लिए डिफ़ॉल्ट टाइमआउट कॉन्फ़िगर करना


10

मैं ssh-addSSH एजेंट में अपनी SSH कुंजियाँ जोड़ने के लिए उपयोग करता हूँ। डिफ़ॉल्ट रूप से, यह उन्हें अनिश्चित काल तक जोड़ता है। टाइमआउट निर्दिष्ट करने के लिए एक कमांड-लाइन विकल्प है, लेकिन क्या एक कॉन्फ़िगरेशन फ़ाइल विकल्प है जो डिफ़ॉल्ट टाइमआउट निर्दिष्ट करेगा?

मैं जो चाहता हूं वह ssh-addबिना किसी कमांड-लाइन के मापदंडों के बिना चलने में सक्षम है और किसी समय-सीमा के लिए दिए गए समय के लिए डिफ़ॉल्ट है (जैसे कि मैंने कॉल किया था ssh-add -t 1h)।

जवाबों:


7

AFAIK, के लिए sshd_configया ssh_configबाहर समय निर्दिष्ट करने के लिए कोई कॉन्फ़िगरेशन नहीं है ssh-agent। से opensshस्रोत कोड, फ़ाइल ssh-agent.c:

/* removes expired keys and returns number of seconds until the next expiry */  
static time_t                                                                   
reaper(void)                                                                    
{                                                                               
    time_t deadline = 0, now = monotime();                                      
    Identity *id, *nxt;                                                         
    int version;                                                                
    Idtab *tab;                                                                 

    for (version = 1; version < 3; version++) {                                 
        tab = idtab_lookup(version);                                            
        for (id = TAILQ_FIRST(&tab->idlist); id; id = nxt) {                    
            nxt = TAILQ_NEXT(id, next);                                         
            if (id->death == 0)                                                 
                continue;                                                       
            if (now >= id->death) {                                             
                debug("expiring key '%s'", id->comment);                        
                TAILQ_REMOVE(&tab->idlist, id, next);                           
                free_identity(id);                                              
                tab->nentries--;                                                
            } else                                                              
                deadline = (deadline == 0) ? id->death :                        
                    MIN(deadline, id->death);                                   
        }                                                                       
    }                                                                           
    if (deadline == 0 || deadline <= now)                                       
        return 0;                                                               
    else                                                                        
        return (deadline - now);                                                
}

और process_add_identityसमारोह में:

process_add_identity(SocketEntry *e, int version)                               
{
.... 
if (lifetime && !death)                                                     
        death = monotime() + lifetime;
....
}

lifetime एक वैश्विक वैरिएबल है और केवल पार्सिंग तर्क को बदलने पर मूल्य:

/* Default lifetime in seconds (0 == forever) */                                
static long lifetime = 0;

int                                                                             
main(int ac, char **av)                                                         
{
.... 
    case 't':                                                               
        if ((lifetime = convtime(optarg)) == -1) {                          
            fprintf(stderr, "Invalid lifetime\n");                          
            usage();                                                        
        }
....
}

आप उबंटू का उपयोग करते हैं, तो आप के लिए डिफ़ॉल्ट विकल्प सेट कर सकते ssh-agentमें /etc/X11/Xsession.d/90x11-common_ssh-agent:

STARTSSH=
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-t 1h"

if has_option use-ssh-agent; then
  if [ -x "$SSHAGENT" ] && [ -z "$SSH_AUTH_SOCK" ] \
     && [ -z "$SSH2_AUTH_SOCK" ]; then
    STARTSSH=yes
    if [ -f /usr/bin/ssh-add1 ] && cmp -s $SSHAGENT /usr/bin/ssh-agent2; then
      # use ssh-agent2's ssh-agent1 compatibility mode
      SSHAGENTARGS=-1
    fi
  fi
fi

if [ -n "$STARTSSH" ]; then
  STARTUP="$SSHAGENT $SSHAGENTARGS ${TMPDIR:+env TMPDIR=$TMPDIR} $STARTUP"
fi

हास्यास्पद चीज़। मैंने कोशिश की SSHAGENTARGS="-s -t 3600"और यह बिना किसी त्रुटि के खाली स्क्रीन के साथ रुक गया। लेकिन सिर्फ एक जिज्ञासा, क्योंकि आपका उत्तर सही है और रुकना या कुछ भी नहीं है।
डॉ। बीको

15

यदि आप ssh-addकमांड लाइन पर कॉल कर रहे हैं , तो शेल उपनाम बनाएं। निम्नलिखित लाइन को अपने ~/.bashrc(यदि बैश का उपयोग कर रहे हैं) या ~/.zshrc(यदि zsh का उपयोग करके) या अन्य लागू शेल आरंभीकरण फ़ाइल में रखें:

alias ssh-add='ssh-add -t 1h'

यदि आप एक गैर-एक्सपायरिंग कुंजी जोड़ना चाहते हैं, तो उपयोग करें \ssh-add /path/to/keyया ssh-add -t 0 /path/to/key

यदि ssh-addअन्य प्रोग्राम से कॉल किया जा रहा है, तो देखें कि क्या उन्हें तर्क लेने के लिए कॉन्फ़िगर किया जा सकता है। विफल रहने कि, जल्दी एक फ़ाइल बनाने पर अपने $PATH( ~/binनिर्देशिका का एक आम विकल्प बनाने यकीन है कि यह अपने की शुरुआत में है, है PATHकहा जाता है और अगर यह मौजूद नहीं है इसे बनाने) ssh-addसे युक्त

#!/bin/sh
exec /usr/bin/ssh-add -t 1h "$@"

( आवश्यक के रूप /usr/bin/ssh-addमें ssh-addबाइनरी के लिए पथ से बदलें ।)


एक शेल उर्फ ​​शायद कार्रवाई का सही कोर्स होगा।
Naftuli Kay

10

डिफ़ॉल्ट टाइमआउट हमेशा के लिए है। हालांकि , विकल्प के माध्यम से एक विशिष्ट एजेंट के लिए डिफ़ॉल्ट टाइमआउट सेट करना संभव है ।-tssh-agent

आदमी से ssh-agent:

-t life
        Set a default value for the maximum lifetime of identities added
        to the agent.  The lifetime may be specified in seconds or in a
        time format specified in sshd_config(5).  A lifetime specified
        for an identity with ssh-add(1) overrides this value.  Without
        this option the default maximum lifetime is forever.

1
क्या कॉन्फ़िगर करने का कोई तरीका है ssh-addताकि डिफ़ॉल्ट हमेशा के लिए कुछ और हो? अगर मैं ssh-addबिना किसी पैरामीटर के बस दौड़ता हूं, तो मैं चाहूंगा कि एक घंटे के बाद समय समाप्त हो।
नातुल्ली काई

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