ssh-under-cron ওএস এক্স 10.7 সিংহটিতে কাজ করা বন্ধ করে দেয়


12

স্নো চিতাবাঘ থেকে সিংহটিতে সবেমাত্র আপগ্রেড হয়েছে এবং ssh ব্যবহার করা আমার ক্রোন জব কাজ বন্ধ করে দিয়েছে। এটি প্রদর্শিত হয় যে ssh- এজেন্ট প্রত্যাশার মতো আর কাজ করে না।

এখানে আমার কল-থেকে-ক্রোন স্ক্রিপ্টের একটি বোল্ডলাইজড সংস্করণ যা স্নো চিতাবাঘের অধীনে দুর্দান্ত কাজ করেছে:

#!/bin/bash
whoami # just to verify I'm running as myself, not root
ssh-agent # just to see what it outputs    
eval `ssh-agent`
ssh -vvv REMOTESERVER ls

কমান্ড প্রম্পট থেকে চালানো হলে, এই স্ক্রিপ্টটি প্রত্যাশার মতো কাজ করে।

ক্রোন থেকে চালানো হলে, এটি কাজ করে না। Ssh- এজেন্ট আউটপুটটি স্বাভাবিক দেখাচ্ছে:

SSH_AUTH_SOCK=/tmp/ssh-QRxPUMRxbu/agent.17147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17148; export SSH_AGENT_PID;
echo Agent pid 17148;
Agent pid 17150

তবে ssh -vvvআউটপুটটি দেখায় যে ব্যক্তিগত কীটি পড়ার সময় এটি ঠিক ব্যর্থ হয়:

debug1: Server accepts key: pkalg ssh-dss blen 818
debug2: input_userauth_pk_ok: fp ...
debug3: sign_and_send_pubkey: DSA ...
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: Device not configured
debug2: no passphrase given, try next key

অন্য কথায়, এটি আমার কাছে পাসফ্রেজ টাইপ করার প্রত্যাশা করছে ~/.ssh/id_dsa, যা অবশ্যই ক্রোন জবগুলিতে কাজ করে না।

এই সব স্নো চিতাবাঘে কাজ করেছিল।

নোট যে আমি কীচেইনে অ্যাক্সেস সেটআপ পেয়েছেন, যাতে ssh, ssh-agentএবং ssh-addআমার জন্য আমার পাসফ্রেজ পড়া করার অনুমতি দেওয়া হয় .ssh/id_dsaফাইল - ফলে আমি কখনো আমার পাসফ্রেজ প্রবেশ না করেও একটি টার্মিনাল প্রম্পট থেকে SSH পারেন।

এই সমস্যাটি কি ssh-addআমার লগইন প্রক্রিয়ার কোনও পর্যায়ে চালানো দরকার ? এটি একটি স্ট্যান্ডার্ড বাশ প্রম্পট থেকে চালানো ক্রোন চাকরিতে সহায়তা করে না (যদিও বিস্ময়করভাবে এটি আমার পাসফ্রেজের জন্য আমাকে অনুরোধ করে ... যা আমি মনে করি কীচেইন অ্যাক্সেস কনফিগারেশনের প্রয়োজনীয় খ / সি নয়)।

দ্রষ্টব্য 1 - আমাকে পুনর্নির্দেশের আগে - আমি জানি যে এখানে একটি অনুরূপ প্রশ্ন রয়েছে ( ম্যাক ওএস এক্স লায়ন এবং এসপাস ) তবে এটি বিশেষত এমন একটি প্রোগ্রাম সম্পর্কে sshpassযা আমি ব্যবহার করি না (যদিও আমি বিশ্বাস করি যে এই প্রশ্নেরও উত্তর দেওয়া হবে) believe )।

দ্রষ্টব্য 2 - আমি বুঝতে পারি যে পাসফ্রেজ-কম এসএসএইচ কীগুলি আমার সমস্যার সমাধান করবে; তবে আমি এই পথে না যেতে পছন্দ করব।


2
ক্রোন চলে গেছে সব ধরণের সহায়তার জন্য এখানে চালু হওয়া ট্যাগটি দেখুন (চালটি করুন - এটি বন্দরগুলি পরিচালনা করে, পরিবেশগত এবং ক্রোনের তুলনায় আরও অনেক ভাল) ।
বিমিক

3
ক্রোন এখনও সিংহটিতে চলছে ... তবে তুমি ঠিক বলেছ, আমার সরানো উচিত। ক্রন্টাবের একক লাইনের কাজ করতে 10+ লাইন এক্সএমএল ফাইলটি বেশ লম্বা। 10 বছরের মধ্যে তারা প্লাস্ট ফাইলগুলি জেএসএনে স্যুইচ করবে এবং এতে অনেক আনন্দ হবে, এবং এর 10 বছর পরে তারা ক্রন্টবায় ফিরে যাবে, এবং বিএসডি গ্রেইয়ার্ডস হাসবে। আমি মনে করি আমি ততক্ষণে বিএসডি গ্রেইয়ার্ড হয়ে যাব ...
জন হার্ট

1
সবেমাত্র চালু হয়েছে, একটি কবজ কাজ করে। কথিত স্ক্রিপ্টটির মোটেও এসএসএইচ-এজেন্টের সাথে ইন্টারঅ্যাক্ট করার দরকার নেই - আপনি কেবল হ্যাশব্যাংয়ের পরে সরাসরি এসএসএস কমান্ডে ঝাঁপিয়ে পড়তে পারেন। যদি আপনার মন্তব্যটির উত্তর ছিল, তবে আমি এটি গ্রহণ করব =)
জন হার্ট

জেএসওএন অবশ্যই বেশিরভাগ ক্ষেত্রে এক্সএমএল জুড়ে জ্বলজ্বল করে, তবে সম্ভবত আগে উপস্থিত সমস্ত প্লিষ্টরা বিষয়টি বাধ্য করেছিল forced আমি কেবল টিকলড করছি আমাদের একটি ইউনিফাইড, দক্ষ, কাঠামোগত ডেটা ভিত্তিক প্রতিস্থাপন রয়েছে। ক্রোন এবং অবশ্যই আমাদের যুগের জন্য ভাল পরিবেশন করেছে!
bmike

অতিরিক্ত ওয়েব সংস্থানগুলির জন্য আমি উচ্চ এবং নিম্ন সন্ধান করছি তবে আমি সর্বদা এই পোস্টে ফিরে আসি। অবশ্যই কারও আলোচনায় আরও অবদান রয়েছে? আমি আমার শেল স্ক্রিপ্টটি চালানোর জন্য একটি সাধারণ প্লিস্ট ব্যবহার করার চেষ্টা করেছি কিন্তু তারপরে মেলেক্স আমার বিজ্ঞপ্তিগুলি প্রেরণ করে না। আমি এখনও ক্রোন পছন্দ করি এবং আমি এটি সর্বদা উবুন্টুতে ব্যবহার করি। আমি 10.6 এ ফিরে যেতে চাই না তবে এই সমস্যাটি আমাকে হত্যা করছে। আমি প্রাথমিকভাবে শেল স্ক্রিপ্টগুলি স্বয়ংক্রিয় করার জন্য লঞ্চাক্টেলটি ব্যবহার করতে বাধ্য হওয়া এবং আমার কাছে কী অনুভূত হয় তা শিখতে পছন্দ করি না। কারও কি নতুন কোন অন্তর্দৃষ্টি আছে?

উত্তর:


10

এই পৃষ্ঠায় যার যারও পক্ষে আমি বুঝতে পেরেছিলাম আমার উত্তরটি পোস্ট করা উচিত:

ক্রনের পরিবর্তে লঞ্চ ব্যবহার করা সত্যই অনুমোদনের সমস্যার সমাধান করে। আপনার ব্যবহারকারী চাকরী চালু করেছেন (যা কেবলমাত্র আপনি যখন লগ ইন করেন কেবল তখনই চালিত হয়) এসএসএইচ এজেন্ট তথ্য সঠিকভাবে ব্যবহার করুন যা আপনার কীচেইনের মাধ্যমে লগইনের অংশ হিসাবে (স্ট্যান্ডার্ড ওএস এক্স কী পরিচালনার অংশ হিসাবে, অন্য কোনও সফ্টওয়্যার প্রয়োজন নেই) ব্যবহার করে।

লঞ্চের সাথে আমার মিথস্ক্রিয়া হ্রাস করতে, আমি একটি একক লঞ্চযুক্ত কাজ তৈরি করেছি যা ব্যাশ স্ক্রিপ্টকে কল করে। এইভাবে আমি লঞ্চটি না করেই কেবল স্ক্রিপ্ট সম্পাদনা করতে পারি।

লঞ্চ করা ফাইলটি এখানে:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.mycron.hourly</string>

  <key>ProgramArguments</key>
  <array>
    <string>/Users/john/bin/cron.hourly</string>
  </array>

  <key>Nice</key>
  <integer>1</integer>

  <key>StartInterval</key>
  <integer>3600</integer> <!-- start every X seconds -->

  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

আমি ফাইলটি এখানে সংরক্ষণ করেছিলাম ~/Library/LaunchAgents/com.mycron.hourly.plistএবং তারপরে এটি লোড করেছি:

launchctl load ~/Library/LaunchAgents/com.mycron.hourly.plist

একবার লোড হয়ে গেলে, এটি সরাসরি চলে যাবে এবং তারপরে প্রতি 60 মিনিটে আবার চলে যাবে।

আপনি যদি একই পদ্ধতি অনুসরণ করেন তবে আপনি আপনার স্ক্রিপ্টের সঠিক পথের সাথে `ProgramArguments 'স্ট্রিংটি পরিবর্তন করতে চান।


2
প্রকৃতপক্ষে, ক্রোন কমপক্ষে সিংহটিতে অবনমিত হয়। উত্তর খোঁজার জন্য কুডোস - প্রবর্তনটি প্রাথমিকভাবে প্রবেশ করা কঠিন হতে পারে।
zwerdlds

7

আপনার বাশ শেল স্ক্রিপ্টে নিম্নলিখিত কোড যুক্ত করা সমস্যার সমাধান করবে:

declare -x SSH_AUTH_SOCK=$( find /tmp/launch-*/Listeners -user your_user -type s | head -1 )

your_userআপনার নিজের ব্যবহারকারীর নাম দিয়ে প্রতিস্থাপন করুন ।

এই কোডটি সেই তথ্যের জন্য বা শেল স্ক্রিপ্টটি শুরু হয়ে গেলে কীভাবে যোগাযোগ করবেন SSH_AUTH_SOCKসে সম্পর্কে সঠিক মান সেট করে ।sshscpssh-agentcron


এটি নিয়মিত কমান্ড লাইন (আইটার্ম বা টার্মিনাল) এর মাধ্যমে সূক্ষ্মভাবে কাজ করার পরেও শ্যাল স্ক্রিপ্টে লঞ্চের মাধ্যমে স্কিপ কাজ করবে না এমন সমস্যার সমাধান করলাম। দুর্দান্ত টিপ।
টিজে লুওমা

কেবল রেকর্ডের জন্য, এল ক্যাপ্টেন 10.11.2 তে:zsh: no matches found: /tmp/launch-*/Listeners
ইভান

1

আমি স্যান্ডবক্সের মতো বর্ধিত সুরক্ষার আশা করব এবং জিনিসগুলিকে to৪ বিটের দিকে সরিয়ে নিয়ে যাওয়া পরিবর্তন অপ্রত্যাশিত দুঃখের কারণ হয়ে দাঁড়াচ্ছে।

এটি কোনও উত্তর নয়, প্রতি সেঞ্চে, তবে চালু হ'ল আপেল থেকে সমস্ত প্রেম পাওয়া যাচ্ছে।

এটি ক্রোন ইস্যুটি ঠিক করছে না, তবে এটি আরও স্থিতিশীল এবং আরও বেশি লোক এতে সহায়তা করতে পারে।


খুব সুন্দর উত্তর সেখানে । এটি পোস্ট করার জন্য ধন্যবাদ।
bmike

1

যে কেউ এখন এটি সন্ধান করছেন, এল ক্যাপ্টিনে এই কাজটি করার চেষ্টা করছেন এবং আপনার এক-লাইন ক্রোন জবকে একটি লঞ্চ স্ক্রিপ্টে পরিণত করতে অনিচ্ছুক, ভার্নার অ্যান্টওয়িলারের উত্তর এখনও কার্যকর তবে পথ বদলেছে। নীচে আমার জন্য কাজ করেছে:

declare -x SSH_AUTH_SOCK=$(find /var/folders/*/*/*/*/agent.* -user your_user -type s | head -1)

দ্রষ্টব্য : আপনার ব্যবহারকারী নামটি আপনার ব্যবহারকারীর সাথে প্রতিস্থাপন করতে ভুলবেন না!

এটি আমাকে তার উত্তরের মন্তব্য হিসাবে জমা দিতে দেয় না কারণ আমার সুনামের অভাব রয়েছে তবে আমি আপডেট না করেই তাকে ছেড়ে যেতে চাইনি কারণ এটি অবশ্যই আমাকে শেষ পর্যন্ত এটি সেট আপ করতে সহায়তা করেছিল।

সম্পাদনা করুন: মার্চ 30, 2016

কিছুক্ষণ পরীক্ষা করার পরে, আমার যুক্ত করা দরকার যে লগইন চলাকালীন এজেন্টটি কমপক্ষে একবার ব্যবহার করা হলে এটি কেবল কাজ করে। এটি করার জন্য কোনও এসএসএস সংযোগ শুরু করা বা ম্যানুয়ালি এসএসএইচ-এজেন্ট চালানো যথেষ্ট। আপনি যদি এটি স্বয়ংক্রিয়ভাবে চালাতে চান তবে একটি স্টার্টআপ স্ক্রিপ্টও ব্যবহার করা যেতে পারে। আমি একটি স্টার্টআপ.শ তৈরি করেছি যা কেবল এসএসএল-এজেন্ট চালায় এবং তারপরে স্ক্রিপ্ট সম্পাদকটি নিম্নলিখিতটি দিয়ে একটি। অ্যাপ সংরক্ষণ করতে ব্যবহার করে এবং এর ফলে অ্যাপটি আমার লগইন আইটেমগুলিতে যুক্ত করে:

do shell script "/path/to/startup.sh"

আমি এখনই এটি সমাধান করছি, এবং এটি সর্বোত্তম উপায় নয়। আপাতদৃষ্টিতে লঞ্চ হ'ল উপায়, তবে ক্রনের জন্য আপনি আপনার এসকে কী (পাসফ্রেজ সহ) আপনার কীচেইনে সেট আপ করতে চান। একবার এটি হয়ে গেলে, ম্যাকটিতে লগ ইন করলে সমস্ত কিছু সেট আপ হয়ে যায়। আপনি পোস্ট করা সকেট পাথটি হ'ল আপনি যদি ssh-এজেন্ট ম্যানুয়ালি চালান (এবং ম্যানুয়ালি আপনার পাসফ্রেজ টাইপ করুন) they এল ক্যাপে, একবার কীচেন লোড হয়ে গেলে সকেটটি দিয়ে সন্ধান করুন ls /private/tmp/com.apple.launchd.*/Listeners। আপনাকে ম্যাকটিতে লগইন করা ছাড়া আর কিছুই করতে হবে না।
জো

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

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