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


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.