শেল স্ক্রিপ্ট থেকে ssh- এজেন্ট চলছে


19

আমি একটি শেল স্ক্রিপ্ট তৈরি করার চেষ্টা করছি যা অন্যান্য জিনিসগুলির মধ্যে এসএসএইচ-এজেন্ট শুরু করে এবং এজেন্টে একটি ব্যক্তিগত কী যুক্ত করে। উদাহরণ:

#!/bin/bash
# ...
ssh-agent $SHELL
ssh-add /path/to/key
# ...

এটির সাথে সমস্যাটি ssh-এজেন্টটি স্পষ্টতই EL SHELL (আমার ক্ষেত্রে, বাশ) এর অন্য একটি উদাহরণকে সরিয়ে দেয় এবং স্ক্রিপ্টের দৃষ্টিকোণ থেকে এটি সবকিছু কার্যকর করে এবং এসএসএড-অ্যাড এবং এর নীচে যে কোনও কিছুই চালানো হয় না।

আমি কীভাবে আমার শেল স্ক্রিপ্ট থেকে ssh-এজেন্ট চালাতে পারি এবং এটি কমান্ডের তালিকার নিচে রেখে যেতে পারি?

উত্তর:


8

ssh-এজেন্টের একটি সেশন শুরু করার কথা এবং এটি শেষ হলে ব্যবহারকারী সেশনটি শেষ হয়। সুতরাং ssh- এজেন্টের পরে যে কোনও কমান্ড লগঅফের পরে কার্যকর হবে।

আপনি যা চান তা হ'ল session-scriptএটির মতো আপনার সেশন কমান্ডগুলি রয়েছে:

#!/bin/bash
ssh-add /path/to/key
bash -i # or other session starter

তারপরে শুরু করুন ssh-agent session-script


ধন্যবাদ! একটি পৃথক স্ক্রিপ্ট তৈরি করা এবং স্ক্রিপ্টটি শেষ করে exitদিয়েছিল কৌতুকটি।
ড্যান

2
সেশন স্ক্রিপ্ট কী?
আলেকজান্ডার মিলস

15

নিম্নলিখিতটি আপনার স্ক্রিপ্টের শীর্ষে রাখুন:

eval `ssh-agent`

আপনার স্ক্রিপ্টটি দেখতে এমন হওয়া উচিত:

#!/bin/bash
eval `ssh-agent`
ssh-add /path/to/key
...
...

ব্যাখ্যা

চারপাশের ব্যাকটিকগুলি ssh-agentএর আউটপুট সংগ্রহ করে। evalআউটপুট সংগ্রহ করে, এটি একটি একক কমান্ডের সাথে যুক্ত করে, এবং তারপরে কমান্ডটি কার্যকর করে। তারপরে আপনি ssh-addআপনার কী শংসাপত্রগুলি সরবরাহ করতে ব্যবহার করতে পারেন ।


9
ব্যাকটিক্স বেরিয়ে যাওয়ার পথে এটি উল্লেখ করার মতো যদিও, এটি আমার প্রয়োজন ঠিক তাই thanks নতুন বাশ আকারে এটি হওয়া উচিতeval $(ssh-agent)
সিবাজ

bash -iস্ক্রিপ্টের শেষে না দেওয়া পর্যন্ত এই সমাধানটি আমার পক্ষে কার্যকর হয়নি ।
অ্যাডল্ফো কোরিয়া

6

আমি স্ক্রিপ্টগুলিতে এমন কিছু করার ঝোঁক করি যার জন্য এজেন্টের প্রয়োজন require

#!/bin/bash

# if we can't find an agent, start one, and restart the script.
if [ -z "$SSH_AUTH_SOCK" ] ; then
  exec ssh-agent bash -c "ssh-add ; $0"
  exit
fi

... and so on.

মূলত স্ক্রিপ্টটি প্রথম কাজটি এজেন্টের সাথে চলছে কিনা তা যাচাই করে। এটি কার্যকর না হলে স্ক্রিপ্টের জায়গায় একটি নতুন প্রক্রিয়া শুরু করতে ব্যবহৃত হয়। এজেন্টটি শুরু হয়, কীগুলি যুক্ত করা হয় এবং শেষ পর্যন্ত স্ক্রিপ্টটি আবার কল করা হয় (দেখুন $0)।


তবে এটি কোনও স্ক্রিপ্টের পরামিতি সংরক্ষণ করবে না। এবং যদি কোনও প্যারামিটারের শ্বেত স্থান থাকে তবে সেগুলি পাশ করে দেওয়া সহজ হবে না।
ডেনিলসন সা মিয়া

3
আপনি ব্যবহার করতে পারেন .. "ssh-add ; $0 $*"বা .. "ssh-add ; $0 $@"পরিবর্তে, যা কাজ করতে পারে। যা নিখুঁত হবে না, তবে অবশ্যই অনেক ক্ষেত্রে কাজ করবে। আপনার এজেন্টটিকে অন্য যে কোনও কিছুতে চালানোর জন্য প্রায়শই সর্বদা সেরা সমাধান, এটি কেবল এমন একটি বিষয় যা অস্পষ্ট ক্ষেত্রে কার্যকর হতে পারে।
জোরডেচে

6

আমি এটি আমার জন্য কাজ করে।

eval `ssh-agent` # create the process
ssh-add ~/.ssh/priv_key # add the key
git -C $repo_dir pull # this line is the reason for the ssh-agent
eval `ssh-agent -k` # kill the process

আমি ssh- এজেন্ট প্রক্রিয়া তৈরি করি, কীটি যুক্ত করি, আমার যা করতে হবে তা করুন, তারপরে এটি হত্যা করুন। এটি পরে চলছে কিনা তা খতিয়ে দেখার দরকার নেই।


4

এটা ব্যবহার করা উত্তম Keychain এই ক্ষেত্রে

Debian / Ubuntu-:

apt-get install keychain

RHEL / ফেডোরা / সেন্টওএস

yum install keychain

আপনার .bashrc এ নিম্নলিখিতটি যুক্ত করুন:

eval `keychain --eval id_rsa`

উত্তম? কেন এটা ভাল?
JFlo

@ জেফ্লো এতে "আরও ভাল", এটি env ভেরিয়েবলগুলিকে $ HOME / .keychain / <file> এ সংরক্ষণ করবে। এই কমান্ডটি আবার চালানো কোনও বিদ্যমান এসএস-এজেন্টটিকে পিকআপ করবে যদি এটি এখনও চলমান থাকে। এটি শেল / স্ক্রিপ্টগুলির মধ্যে পুনরায় ব্যবহার করা যেতে পারে। কিছু পরিস্থিতিতে যে নিরাপদ নয়, তাই আপনাকে সেই কল করতে হবে। আমার জন্য, এটি একই স্ক্রিপ্ট সম্পাদনের জন্য আমি লিখেছি এমন কিছু স্ক্রিপ্টগুলির চেয়ে উন্নতি
স্কট কার্লসন

2

আমি জোরডাচের সমাধান সহ পেয়েছি, যে শেলটি স্ক্রিপ্ট বলে তাকে একই শেশ-এজেন্ট ভাগ করার জন্য কীটি পাওয়া যাবে। আমি এটিকে কোনও স্ক্রিপ্টে এড়াতে চেয়েছিলাম যে স্পষ্ট সুরক্ষার কারণে, একটি দূরবর্তী মেশিনে রুট অ্যাক্সেস প্রয়োজন।

আমি স্ক্রিপ্টের কাজগুলির উপরে নীচে শিবাংটি রেখেছি:

#!/usr/bin/ssh-agent bash

ssh-add /path/to/ssh-key
ssh root@remotehost "remote commands"

-2

আমি চেষ্টা করেছি এবং অনেক কিছু করেছি এবং যে সমাধানটি অবশেষে কাজ করেছিল তা ছিল আমার পাসফ্রেজটি একটি খালি স্ট্রিংয়ের সাথে প্রতিস্থাপন।

ssh-keygen -p

এটি একটি খুব অনিরাপদ অনুশীলন। এসএসএস ব্যবহার করে কেন বিরক্ত করবেন? আপনি যদি আপনার ব্যক্তিগত কীটি সুরক্ষা না দেন তবে আপনি সম্ভবত পরিষ্কার লেখায় কথা বলছেন।
JFlo

@ জেএফএল: আপনার ক্লায়েন্ট সিস্টেমটি পর্যাপ্ত সুরক্ষিত না থাকলে এটি যা হতে পারে not বিশেষত যদি আপনি এসিএল, সেলইনাক্স বা অনুরূপ যোগ করেন (করতে পারেন এবং করতে পারেন) যা স্ট্যাটিক ফাইলের সাথে সহজ তবে এসএসএল-এজেন্টের র্যান্ডমাইজড সকেটের সাথে কম। এটি বলেছিল আমি সাধারণত এটি প্রথম পছন্দ হিসাবে সুপারিশ করব না।
dave_thompson_085

যদিও এটি আপনার দেওয়া খুব সহায়ক একটি প্রক্রিয়া, তবে আমি মনে করি না যে এটি ওপির প্রশ্নের সম্পর্কে কোনও উত্তর দেয়।
আলেকজান্ডার বার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.