এসএসএইচ এজেন্টের জন্য ডিফল্ট সময়সীমাটি কনফিগার করা


10

আমি ssh-addআমার এসএসএইচ কীগুলি এসএসএইচ এজেন্টে যুক্ত করতে ব্যবহার করি । ডিফল্টরূপে, এটি তাদের অনির্দিষ্টকালের জন্য যুক্ত করে। একটি সময়সীমা নির্দিষ্ট করার জন্য একটি কমান্ড-লাইন বিকল্প রয়েছে, তবে কি একটি কনফিগারেশন ফাইল বিকল্প রয়েছে যা ডিফল্ট সময়সীমাটি নির্দিষ্ট করবে?

আমি যা চাই তা হ'ল ssh-addকোনও কমান্ড-লাইন প্যারামিটার ছাড়াই চালানো এবং একটি সময়সীমার জন্য নির্দিষ্ট পরিমাণে এটি ডিফল্ট করা (যেন আমি ডেকেছি ssh-add -t 1h)।

উত্তর:


7

আফাইক, সময় নির্ধারণের জন্য sshd_configবা কোনও কনফিগারেশন নেই । উত্স কোড থেকে , ফাইল :ssh_configssh-agentopensshssh-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"এবং এটি কোনও ত্রুটি, ফাঁকা স্ক্রিন ছাড়াই থামে। তবে কেবল একটি কৌতূহল, কারণ আপনার উত্তরটি সঠিক এবং এটি থামছে না বা কিছুই doesn't
— ডাঃ বেকো

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প্রয়োজনীয় হিসাবে প্রতিস্থাপন করুন ))


একটি শেল ওরফে সম্ভবত কর্মের সঠিক পথ হবে।
— নাফটুলি কে

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?
— ওউকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.