আপনি ক্রোন সেশনের মধ্যে এসএসএস সংযোগ তৈরি করতে পারেন। আপনার যা প্রয়োজন তা হ'ল পাসওয়ার্ডহীন অ্যাক্সেসের জন্য একটি সর্বজনীন কী প্রমাণীকরণ সেটআপ করা। এটি কাজ করতে আপনার PubkeyAuthentication yes
প্রতিটি রিমোট সার্ভারে থাকা দরকার sshd_config
।
আপনি একটি পাসফ্রেজ সহ বা ছাড়াই একটি ব্যক্তিগত / সর্বজনীন কী জুড়ি তৈরি করতে পারেন। আপনি যদি একটি পাসফ্রেজ ব্যবহার করেন (পুনঃনির্বাচিত) তবে আপনাকে এসএসএল-এজেন্টও শুরু করতে হবে। পাসফ্রেজ ব্যতীত আপনার কেবল কমান্ড লাইনে প্যারামিটার যুক্ত -i your_identity_file
করতে হবে ssh
। ডিফল্ট হিসাবে ssh
ব্যবহার করবে $HOME/.ssh/id_rsa
।
আমি একটি পাসফ্রেজ সহ কী কী ব্যবহার করে আপনার উদাহরণটি প্রতিলিপি করেছি। আমি এটি কীভাবে করেছি তা এখানে।
1) পাসফ্রেজ দিয়ে কী জুটি তৈরি করেছে। প্রাইভেট কীটি হিসাবে সংরক্ষণ করা হয়েছে ~/.ssh/id_rsa_test
, এতে ডিফল্টরূপে সঠিক অনুমতি থাকতে হবে। এটি ব্যবহার না করার জন্য আমরা একটি খালি পাসফ্রেজ লিখতে পারি।
john@coffee:~$ ssh-keygen -N "somephrase" -f .ssh/id_rsa_test
Generating public/private rsa key pair.
Your identification has been saved in .ssh/id_rsa_test.
Your public key has been saved in .ssh/id_rsa_test.pub.
[snip]
2) সার্ভারগুলিতে সর্বজনীন কী প্রেরণ করে, তাদের সবার জন্য একই কাজ করেছেন। মনে রাখবেন তাদের PubkeyAuthentication
সক্ষম করা দরকার ।
john@coffee:~$ ssh-copy-id -i .ssh/id_rsa_test server1
The authenticity of host 'server1 (11.22.33.1)' can't be established.
RSA key fingerprint is 79:e8:0d:f5:a3:33:1c:ae:f5:24:55:86:82:31:b2:76.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server1,11.22.33.1' (RSA) to the list of known hosts.
john@server1's password:
Now try logging into the machine, with "ssh 'server1'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
3) সার্ভিস হিসাবে এজেন্ট হিসাবে এজেন্ট চালান -s
। আপনি লগআউট করলে এটি হত্যা করবে না। এর আউটপুটটি একটি বৈধ শেল স্ক্রিপ্ট, পরিবেশ নির্ধারণ করে সুতরাং ssh ক্লায়েন্ট কীভাবে এটিতে সংযুক্ত হতে পারে তা জানতে পারে। আমরা এটি একটি ফাইলে সংরক্ষণ করি (কেবলমাত্র প্রথম লাইনের সত্যই প্রয়োজন)।
john@coffee:~$ ssh-agent -s | head -n 1 > ssh-agent.cf
john@coffee:~$ cat ssh-agent.cf
SSH_AUTH_SOCK=/tmp/ssh-VhyKL22691/agent.22691; export SSH_AUTH_SOCK;
4) উপরের অংশটিকে আমাদের বর্তমান পরিবেশে লোড করা হয়েছে যাতে আমরা ssh-add
আমাদের ব্যক্তিগত কী যুক্ত করতে পারি ssh-agent
। উপর থেকে পাসফ্রেজ
john@coffee:~$ source ssh-agent.cf
john@coffee:~$ ssh-add .ssh/id_rsa_test
Enter passphrase for .ssh/id_rsa_test:
Identity added: .ssh/id_rsa_test (.ssh/id_rsa_test)
5) যাচাইকৃত এটি যুক্ত করা হয়।
john@coffee:~$ ssh-add -l
2048 96:58:94:67:da:67:c0:5f:b9:0c:40:9b:52:62:55:6a .ssh/id_rsa_test (RSA)
6) আমি যে স্ক্রিপ্টটি ব্যবহার করেছি তা আপনার চেয়ে কিছুটা সংশোধিত। লক্ষ্য করুন যে আমি বন্ধনীতে ssh কমান্ডটি বন্ধ করে নেই এবং ব্যাকটিকগুলি ব্যবহার না করে $()
যা কমান্ড প্রতিস্থাপনের জন্য ভাল বিকল্প (এটি bash
সামঞ্জস্যপূর্ণ, আপনি কোন শেলটি ব্যবহার করছেন তা উল্লেখ করেননি)। আমি আপনার হিসাবে ঠিক একই ssh কমান্ডটি ব্যবহার করেছি।
john@coffee:~$ cat foo.sh
#!/bin/bash
source /home/john/ssh-agent.cf
for server in server1 server2; do
usr=$(ssh -t -t -o ConnectTimeout=60 $server finger | tail -1 | awk '{print $1}')
date=$(ssh -o ConnectTimeout=60 $server date)
echo "$server - $date - $usr" >> /home/john/foo.log
done
)) আমার ক্রন্টব (নোট করুন যে আমার sh
আসলে bash
)
john@coffee:~$ crontab -l
# m h dom mon dow command
*/1 * * * * sh /home/john/foo.sh
8) আউটপুট
john@coffee:~$ tail -n 4 foo.log
server1 - Wed Mar 23 14:12:03 EET 2011 - john
server2 - Wed Mar 23 14:12:04 EET 2011 - john
server1 - Wed Mar 23 14:13:03 EET 2011 - john
server2 - Wed Mar 23 14:13:04 EET 2011 - john
পাসফ্রেজ ব্যবহারের ক্ষেত্রে একমাত্র সমস্যা হ'ল কমপক্ষে একবারে আপনাকে এটি ম্যানুয়ালি প্রবেশ করতে হবে। সুতরাং, উপরেরগুলি পুনরায় বুটের পরে স্বয়ংক্রিয়ভাবে কাজ করবে না।