এই উত্তরটি আরও সুরক্ষা যুক্ত করে নির্বাচিত উত্তরের উপর উভয় বিকাশ করে ।
এই উত্তরটি সাধারণ রূপ নিয়ে আলোচনা করেছে
<command that makes output> | \
ssh <user A>@<host A> <command that maps stdin to clipboard>
কোথায় নিরাপত্তা উদাসীন হতে পারে হয় sshঅনুমতি যার ফলে <user B>উপর host B>থেকে sshমধ্যে host Aএবং চালানো কোনো কমান্ড।
অবশ্যই Bকরতে Aঅ্যাক্সেস ইতিমধ্যে একটি দ্বারা সীমাবদ্ধ হতে পারে sshকী, এবং এটি এমনকি একটি পাসওয়ার্ড থাকতে পারে। তবে সুরক্ষার আরেকটি স্তর অনুমতিযোগ্য কমান্ডগুলির সীমাবদ্ধ Bকরতে পারে যা কার্যকর করতে পারে A, যেমন rm -rf /এটি বলা যায় না। (এই যখন বিশেষভাবে গুরুত্বপূর্ণ sshচাবি নেই একটি পাসওয়ার্ড রয়েছে।)
ভাগ্যক্রমে, sshএকটি অন্তর্নির্মিত বৈশিষ্ট্য রয়েছে যার নাম কমান্ড সীমাবদ্ধতা বা জোর করে কমান্ড । দেখুন ssh.com , কিংবা এই serverfault.com প্রশ্ন ।
নীচের সমাধানটি ssh কমান্ড সীমাবদ্ধতা প্রয়োগের সাথে সাধারণ ফর্ম সমাধান দেখায় ।
কমান্ড সীমাবদ্ধতার সাথে সমাধান যুক্ত করুন
এই সুরক্ষা বর্ধিত সমাধানটি সাধারণ ফর্মটি অনুসরণ করে - sshসেশনটির কলটি host-Bকেবল এইভাবে :
cat <file> | ssh <user-A>@<host A> to_clipboard
এর বাকি অংশটি এটির কাজ পেতে সেটআপ দেখায়।
Ssh কমান্ড সীমাবদ্ধতার সেটআপ
ব্যবহারকারীর অ্যাকাউন্ট ধরুন Bহয় user-B, এবং B একটি ssh কী হয়েছে id-clip, যে স্বাভাবিক ভাবেই তৈরি করা হয়েছে ( ssh-keygen)।
তারপর user-Aএর SSH ডিরেক্টরির সেখানে একটি ফাইল
/home/user-A/.ssh/authorized_keys
এটি কীটি সনাক্ত করে id-clipএবং sshসংযোগের অনুমতি দেয় ।
সাধারণত প্রতিটি লাইনের বিষয়বস্তু authorized_keysহ'ল সর্বজনীন কী অনুমোদিত হয়, যেমন, এর বিষয়বস্তু id-clip.pub।
তবে, প্রয়োগ করা কমান্ড সীমাবদ্ধতা যে পাবলিক কী সামগ্রীগুলি কার্যকর করা হবে সেই আদেশ দ্বারা (একই লাইনে) চাপ দেওয়া হয়েছে।
আমাদের ক্ষেত্রে:
command="/home/user-A/.ssh/allowed-commands.sh id-clip",no-agent-forwarding,no-port-forwarding,no-user-rc,no-x11-forwarding,no-pty <content of file id-clip.pub>
মনোনীত কমান্ড "/home/user-A/.ssh/allowed-commands.sh id-clip", এবং কেবলমাত্র মনোনীত কমান্ডটি কার্যকর করা হয় যখনই কী id-clipব্যবহার করা হয় আরম্ভ করুন iatessh সাথে সংযোগ করে host-A- কোন আদেশটি কি sshকমান্ড লাইনই লিখিত হয় না ।
কমান্ডটি একটি স্ক্রিপ্ট ফাইল নির্দেশ করে allowed-commands.shএবং সেই স্ক্রিপ্ট ফাইলটির বিষয়বস্তু
#/bin/bash
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
Id=${1}
case "$SSH_ORIGINAL_COMMAND" in
"to-clipboard")
notify-send "ssh to-clipboard, from ${Id}"
cat | xsel --display :0 -i -b
;;
*)
echo "Access denied"
exit 1
;;
esac
আসল কল sshমেশিনেB ছিল
... | ssh <user-A>@<host A> to_clipboard
স্ট্রিংটি পরিবেশ পরিবর্তনশীল দ্বারা to-clipboardপ্রেরণ করা allowed-commands.shহয়SSH_ORIGINAL_COMMAND । সংযোজন, আমরা id-clipযে লাইনটি authorized_keysকেবল অ্যাক্সেস করে সেখান থেকে, কীটির নামটি পাস করেছি id-clip।
লাইন
notify-send "ssh to-clipboard, from ${Id}"
ক্লিপবোর্ডটি লেখা হচ্ছে তা আপনাকে জানাতে কেবল একটি পপআপ বার্তা বাক্স - এটি সম্ভবত একটি ভাল সুরক্ষা বৈশিষ্ট্য। ( notify-sendউবুন্টু 18.04 এ কাজ করে, অন্যরা নাও পারে)।
লাইনের মাঝে
cat | xsel --display :0 -i -b
প্যারামিটারটি --display :0প্রয়োজনীয় কারণ প্রক্রিয়াটির নিজস্ব ক্লিপবোর্ডের এক্স এক্স নেই, সুতরাং এটি অবশ্যই স্পষ্টভাবে নির্দিষ্ট করা উচিত। এই মানটি :0ওয়েল্যান্ড উইন্ডো সার্ভারের সাথে উবুন্টু 18.04 এ কাজ করতে দেখা যায়। অন্যান্য সেটআপগুলিতে এটি কাজ নাও করতে পারে। একটি স্ট্যান্ডার্ড এক্স সার্ভারের জন্য এই উত্তর সাহায্য করতে পারে।
host-A /etc/ssh/sshd_config পরামিতি
পরিশেষে /etc/ssh/sshd_configহোস্টের কয়েকটি পরামিতি Aযা সংযোগের অনুমতি নিশ্চিত করতে হবে এবং sshকেবল পাসওয়ার্ড ছাড়াই -কি ব্যবহারের অনুমতি নিশ্চিত করতে হবে :
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
AllowUsers user-A
করতে sshdসার্ভার কনফিগ পুনরায় পড়া
sudo systemctl restart sshd.service
অথবা
sudo service sshd.service restart
উপসংহার
এটি সেট আপ করার জন্য কিছু চেষ্টা করা হয়েছে, তবে অন্যান্য to-clipboardকাঠামোগুলি একই কাঠামোর সমান্তরালে নির্মিত যেতে পারে।
:'<,'>w !ssh desktop pbcopy