ssh অনুমতি কেবল ক্রোন চাকরিতে অস্বীকার করা হয়েছে


13

খুব অদ্ভুত সমস্যা হচ্ছে। আমি একটি ছোট বাশ স্ক্রিপ্ট তৈরি করেছি যা ssh (সার্বজনীন কী প্রমাণীকরণ ব্যবহার করে) এর মাধ্যমে দূরবর্তী হোস্টে একটি কমান্ড চালায়।

আমি যখন এই স্ক্রিপ্টটি কমান্ড লাইন থেকে ম্যানুয়ালি চালিত করি এটি ঠিকঠাক কাজ করে তবে /etc/cron.hourly এ রাখলে এটি Permission denied, please try again.ত্রুটির সাথে ব্যর্থ হয় ।

  • আমি স্ক্রিপ্টে স্পষ্টভাবে কীটি সেট করে ব্যবহার করেছি ssh -i /root/.ssh/id_rsa user@remote "command";
  • স্ক্রিপ্টটি রুট হিসাবে চলছে (আমি echo `id` > /tmp/whoami.logডাবল- চেকটিতে একটি যুক্ত করেছি ); এবং
  • ssh কী পাসওয়ার্ড সুরক্ষিত নয় ...

সিস্টেমটি উবুন্টু 12.04 সার্ভার, সমস্যা সমাধানের জন্য আমার কাছে দূরবর্তী দিকের খুব বেশি অ্যাক্সেস নেই, তবে আমি যেমন বলেছি, ssh ম্যানুয়ালি চালানো বা কমান্ড-লাইন থেকে একই বাশ স্ক্রিপ্টটি কাজ করে।

কেন এমন হচ্ছে বা কীভাবে এটি ঠিক করবেন এর কোন ধারণা ??

হালনাগাদ

দেখা যাচ্ছে যে আমার ভুল হয়েছে এবং ssh কীটি পাসওয়ার্ড সুরক্ষিত ছিল (কীচেইন এসএস-এজেন্ট লোড সহ) তাই বাশ সেশন থেকে চলাকালীন কেন এটি স্ক্রিপ্ট থেকে ব্যর্থ হয়েছিল। . ~/.keychain/$HOSTNAME-shআমার স্ক্রিপ্টে যুক্ত করা সমস্যার সমাধান করেছে (@ গ্রায়েটিকে ধন্যবাদ যারা আমাকে সঠিক দিকে নির্দেশ করেছেন এবং একটি বিস্তৃত উত্তর দিয়েছেন)।


আপনি কি নিশ্চিতরূপে এটি চালনা করে সেই নির্দিষ্ট কীটি ব্যবহার করেছেন? আনসেটিং SSH_AUTH_SOCKএবং KRB5CCNAMEপরিবেশের পরিবর্তনশীলগুলির পরে আবার পরীক্ষা করুন ।
ব্যবহারকারীর 6868

পরামর্শের জন্য ধন্যবাদ. নিশ্চিত যদিও আমি আপনাকে পুরোপুরি বুঝতে পেরেছি। আমি নিশ্চিত যে এটি সেই বিশেষ কীটি ব্যবহার করছে, কারণ আমি নিজে থেকে চালুর সময় দূরবর্তী হোস্টের সাথে সংযোগ / চালাতে সক্ষম হয়েছি। এই ভেরিয়েবলগুলি আনসেট করার পরে আমার আবার ঠিক কী পরীক্ষা করা উচিত?
Yoav Aner

এছাড়াও - আমি ssh- এজেন্ট ব্যবহার করছি না, সুতরাং কীভাবে SSH_AUTH_SOCKসম্পর্কিত তা নিশ্চিত না (যদিও আমি কিছু চেষ্টা করে খুশি)। আমি সরাসরি কী ফাইলটি অ্যাক্সেস করছি এবং কী ফাইলটি পাসওয়ার্ড সুরক্ষিত নয়। হিসাবে KRB5CCNAMEএকটি দ্রুত অনুসন্ধান দেখিয়েছেন এই কার্বারোস কি কিছু নেই। আবার - এই সমস্যার সংযোগটি দেখতে পাবেন না, তবে সম্ভবত আমি এখানে কিছু মিস করছি ...
Yoav Aner

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

তবে আমি তাই করি। আমি ssh -iউভয় ক্ষেত্রেই স্পষ্টভাবে কমান্ড ব্যবহার করে কীটি ব্যবহার করব ... আমি স্ক্রিপ্টে সেই পরিবর্তনগুলি আনসেট করার চেষ্টা করব এবং দেখব। যোগ করার জন্য ভাল পরামর্শ -v- আমি এটিও যুক্ত করব।
Yoav Aner

উত্তর:


11

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

  • যদি কোনও এসএসএইচ এজেন্ট চলমান থাকে তবে sshক্লায়েন্ট সর্বদা নির্দিষ্টভাবে নির্দিষ্ট কী ব্যবহার করার আগে এজেন্ট কীগুলি চেষ্টা করে keys

  • নেটওয়ার্কটি কার্বেরোস ব্যবহার করে এবং একটি কার্বেরোস টিজিটি উপস্থিত থাকলে, ওপেনএসএসএইচ সর্বজনীন-কী প্রমাণীকরণ চেষ্টা করার আগে এটি ব্যবহার করবে ।

আমি আপনার পরিবেশ সম্পর্কে কিছুই জানি না, তবে এই দুটি সম্ভাবনাই চেক করা সহজ:

  1. কমান্ডটি যুক্ত করুন unset SSH_AUTH_SOCKএবং তার unset KRB5CCNAMEআগে ssh, তারপরে ম্যানুয়ালি পরিবর্তিত স্ক্রিপ্টটি চালান।

    এটি স্ক্রিপ্টটি এজেন্ট বা কার্বেরোস টিকিটগুলি দেখতে বাধা দেবে এবং কেবলমাত্র স্পষ্টভাবে নির্দিষ্টকৃত কীটি ব্যবহার করবে।

  2. যোগ -vকরার বিকল্প ssh। এটি কীভাবে প্রমাণীকরণ হয় তার আরও বিশদ প্রদর্শন করবে।

আপনি কমান্ড যুক্ত -oIdentitiesOnly=yesকরতে পারেন ssh; এটি নির্দিষ্ট কীটি ব্যবহার করতে বাধ্য করবে


এবং যদি আপনি ক্রোন থেকে এজেন্ট অ্যাক্সেসের জন্য টিপস যোগ করেন - আরও ভাল

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

আপনি "কীচেইন" উল্লেখ করেছেন - এটি ওএস এক্স প্রোগ্রাম, না লিনাক্স স্ক্রিপ্ট? (আমি ম্যাক ওএস এক্স এর আর্কিটেকচার সম্পর্কে খুব বেশি কিছু জানি না, তবে এএফআইএইকি এটি ক্রোনজব থেকে ব্যবহারকারীর এসএস-এজেন্ট অ্যাক্সেস করা আরও শক্ত করে তোলে ...)


1
আপনি আপনার এসএসএইচ কীগুলি প্রকাশ না করে তবে এসএসএইচ এজেন্ট ব্যবহার করে নিরাপদ সার্ভারগুলিতে নির্ধারিত এসএসএইচ সংযোগ স্থাপন করতে ssh-cron ব্যবহার করতে পারেন। superuser.com/questions/463540/…
লুচোস্টেইন

5

এই ইস্যুটির আর একটি কর্মক্ষেত্রটি স্থানীয় বাক্সে ssh করতে ক্রোন সেট করা হবে যার ফলে স্থানীয়, পরম পথ দ্বারা ফাইল বা কমান্ড চালানোর পরিবর্তে ssh কমান্ড চালানো হবে। এটি কেআরবি 5 সিএমএস কে ক্যাশে করে এবং যেখানে / পাথ / কমান্ড না দেয় সেখানে কাজ করে।

# Fails:
0 * * * * /home/user/sshscript.sh

# Works:
0 * * * * /usr/bin/ssh user@localhost /home/user/sshscript.sh

#!/bin/bash
# Works:
unset SSH_AUTH_SOCK
unset KRB5CCNAME
/usr/bin/ssh user@localhost /home/user/sshscript.sh

1

আপনি আপনার এসএসএইচ কীগুলি প্রকাশ না করে, তবে এসএসএইচ এজেন্ট ব্যবহার করে নিরাপদ সার্ভারগুলিতে নির্ধারিত এসএসএইচ সংযোগ স্থাপন করতে ssh-cron ব্যবহার করতে পারেন ।


নির্ভরতা হোমব্রিউতে উপলভ্য নয়, তাই ইনস্টল করা জটিল বলে মনে হচ্ছে। পাসওয়ার্ডহীন কী আমি অনুমান করি ...: - /
চার্লি গরিচানাজ

-1

আপনি আপনার স্ক্রিপ্ট বা কমান্ডটি ক্রন্টবায় চালাতে পারেন:

0 * * * * বাশ-সি-এল "/ হোম / ইউজার / এসএসসক্রিপ্ট.শ"

অথবা

0 * * * * bash -c -l "ssh root @ yourhost 'প্রতিধ্বনি $ HOSTNAME'"


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