কী পাসফ্রেজের জন্য গ্রাফিকাল প্রম্পট ব্যবহার করতে এসএসএইচকে বলুন


41

টার্মিনালটি ব্যবহার করা স্ট্যান্ডার্ডের পরিবর্তে গ্রাফিকাল প্রম্পট (জিটিকে, উদাহরণস্বরূপ) ব্যবহার করে কীভাবে আমি এসএসএইচকে পাসফ্রেসের জন্য অনুরোধ করতে বাধ্য করব?

আমি সেটিং করার চেষ্টা করেছি SSH_ASKPASS=/usr/bin/ssh-askpassতবে মনে হয় এর কোনও প্রভাব নেই।

ওপেনশ ডকুমেন্টেশন বলছে সমস্যাটি হ'ল

যদি ssh এর সাথে কোনও টার্মিনাল যুক্ত না হয় তবে DISPLAY এবং SSH_ASKPASS সেট করা থাকে তবে এটি SSH_ASKPASS দ্বারা নির্ধারিত প্রোগ্রামটি কার্যকর করবে এবং পাসফ্রেজ পড়ার জন্য একটি এক্স 11 উইন্ডো খুলবে।

একটি ফল হিসাবে আমার ক্ষেত্রে, কমান্ড লাইন থেকে চালু কোনো SSH git push, হবে তাই হয়, এটা সাথে সম্পর্কিত একটি টার্মিনাল আছে SSH_ASKPASSযুক্তিবিজ্ঞান উপেক্ষা করা বলে মনে হয়।

দয়া করে মনে রাখবেন যে আমি উল্লেখ করছি না ssh-add, তবে একটি হোস্টের দিকে জেনেরিক এসএস-র অনুরোধের জন্য যা একটি কী জুড়ি উপস্থিত রয়েছে তবে একটি পাসফ্রেজ দ্বারা সুরক্ষিত রয়েছে।

উত্তর:


32

# 1 - প্যাকেজ মিস?

আপনি সম্ভবত প্যাকেজটি হারিয়েছেন ssh-askpass। এটি ইনস্টল করার চেষ্টা করুন।

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

$ sudo yum install openssh-askpass

Debian / Ubuntu-:

$ sudo apt-get install ssh-askpass-gnome ssh-askpass

নিখোঁজ ইউটিলিটিগুলি সন্ধান করা হচ্ছে

আপনি এই আদেশগুলি ব্যবহার করে হারিয়ে যাওয়া সরঞ্জামগুলির সন্ধান করতে পারেন:

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

$ yum search ssh-askpass
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
======================================================= Matched: ssh-askpass =======================================================
x11-ssh-askpass.x86_64 : A passphrase dialog for X and not only for OpenSSH
ksshaskpass.x86_64 : A KDE version of ssh-askpass with KWallet support
connect-proxy.x86_64 : SSH Proxy command helper
openssh-askpass.x86_64 : A passphrase dialog for OpenSSH and X

Debian / Ubuntu-:

$ apt-file -l search ssh-askpass
app-install-data
cruft
git-cola
luckybackup-data
pssh
sdm-terminal
seahorse
ssh-askpass
ssh-askpass-fullscreen
ssh-askpass-gnome

# 2 - সংযোগ বিচ্ছিন্ন টার্মিনাল?

আমি প্রাথমিকভাবে এটি মিস করেছি তবে আরও পড়ার পরে আমি পরিবেশ পরিবর্তনশীল sshসম্পর্কিত ম্যান পেজে এই মন্তব্যটি লক্ষ্য করেছি SSH_ASKPASS

উদ্ধৃতাংশ

SSH_ASKPASS    If ssh needs a passphrase, it will read the passphrase from the 
               current terminal if it was run from a terminal.  If ssh does not
               have a terminal associated with it but DISPLAY and SSH_ASKPASS 
               are set, it will execute the program specified by SSH_ASKPASS 
               and open an X11 window to read the passphrase. This is particularly
               useful when calling ssh from a .xsession or related script.  
               (Note that on some machines it may be necessary to redirect the 
               input from /dev/null to make this work.)

আপনি মন্তব্যে লক্ষ্য, এটা বলে যে, SSH "একটি টার্মিনাল যুক্ত নেই" এবং DISPLAY & SSH_ASKPASSসেট করা হয়। এটিকে লক্ষ্য করা কী। সুতরাং পেতে sshব্যবহার করতে SSH_ASKPASSআমরা পেতে প্রয়োজন sshএকটি টার্মিনাল (ওরফে। আছে না STDIN& STDOUT) এটি সংযুক্ত করা হয়েছে।

কমান্ডটি ব্যবহার করে এটি করার একটি উপায় setsid। খারাপ লাগবে না। আমি কখনও এই সরঞ্জাম সম্পর্কে শুনিনি। ম্যান পৃষ্ঠা থেকে:

setid - একটি নতুন সেশনে একটি প্রোগ্রাম চালান

সুতরাং আমরা যদি ssh"প্রোগ্রাম" হিসাবে চালিত করি তবে আমরা আমাদের টার্মিনালটির ম্যান পেজে উল্লিখিত মানদণ্ড পূরণ করে setsidআলাদা করতে পারি । অন্যান্য মানদণ্ড নিম্নলিখিত হিসাবে সেট করা হয়:sshssh

$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass

সুতরাং যদি আমরা এই সব একসাথে রাখি:

$ setsid ssh user@remotehost

উদাহরণ স্বরূপ:

$ setsid ssh user@skinner

                                       এস এস জি জিজ্ঞাসা

একটি সমাধান

আপনি যদি এটি তৈরি করতে চান setsidতবে "বিল্ট ইন" আপনি এই জাতীয় উপকরণ তৈরি করতে পারেন:

$ alias ssh="setsid ssh"

এখন যখন আপনি sshজিইউআই আপনার পাসওয়ার্ড জিজ্ঞাসা করে পপ আপ করবে:

$ ssh user@skinner

তথ্যসূত্র


ssh-Askpass জিনোম ইনস্টল করা আছে এবং ম্যানুয়ালি চালু করা হলে এটি কাজ করে।
gioele

@ জিওলি - আপডেটগুলি দেখুন, আমার মনে হয় আমি এটি খুঁজে পেয়েছি।
slm

এই সমাধানটির সমস্যাটি হ'ল এটি প্রয়োজন যে আমি প্রতিটি গিট বা rsync কমান্ডটি সংশোধন করে setsid sshপ্লে-এর ইনস্টাড ব্যবহার করতে পারি ssh
gioele

@ জিওলি - আপনি পাসওয়ার্ড জিইউআই "বাধ্য" করার জন্য একটি পদ্ধতি চেয়েছিলেন, এটি এটি সরবরাহ করে। আপনি কমান্ডগুলি প্রতিস্থাপন করতে পারেন যেমন sshএলিয়াসগুলির setsid sshসাথে একটি পদ্ধতির। অন্যান্য উপায় আছে। ASK_SSHPASS সক্রিয় করার জন্য সীমাবদ্ধ ফ্যাক্টরটি ওপেনশের কোনও টিটিওয়াই সংযুক্ত নেই।
slm

আমি প্যাকেজটি মিস করছি না এবং আমি ব্যবহার করতে পারি না setsidএবং তারপরে sshআমার টার্মিনাল থেকে কাজ করতে পারি। এটি মোটেই বৈধ উত্তর নয় !? এছাড়াও, এটি উবুন্টুর পুরানো সংস্করণগুলিতে কাজ করছিল, সুতরাং হঠাৎ এটি কেন কাজ বন্ধ করে দিয়েছে আমি বুঝতে পারছি তা আমি নিশ্চিত নই!
অ্যালেক্সিস উইলক

8

এটি বর্তমান ওপেনএসএসএইচে করা যাবে না: ওপেনএসএসএইচ বুগজিলা 2013-07-এ এই বৈশিষ্ট্যটির জন্য জিজ্ঞাসা করছে এমন একটি সমস্যা রয়েছে: এসএসএইচ_এএসকেপাসকে সাধারণীকরণ করুন


এটি প্রশ্নের উত্তর দেয় না। কোনও লেখকের সমালোচনা বা স্পষ্টতার জন্য অনুরোধ জানাতে, তাদের পোস্টের নীচে একটি মন্তব্য দিন leave
cuonglm

8
@cuonglm "এটি সম্ভব নয়" একটি উত্তর। এটি ভুল বা বিভ্রান্তিকর হতে পারে (আমি এটি বলছি না) তবে এটি এখনও একটি উত্তর।
টেরডন

2

একটি একক কমান্ডের জন্য টার্মিনালটি বন্ধ করার একটি উপায় রয়েছে এবং এটি ফাইল পুনঃনির্দেশ ব্যবহার করছে:

ssh-add > /dev/null < /dev/null 2>&1

এটি ssh-addটার্মিনাল বন্ধ হয়ে কমান্ডটি চালাবে । এটি জটিলতা ব্যতীত যা সূক্ষ্ম এবং জঘন্য। তবে এখন আপনি সঠিক কমান্ডটি জানেন, কেবল এটির একটি উপাধি করুন এবং এতে যুক্ত করুন ~/.bash_aliases:

alias ssh-add="/usr/bin/ssh-add > /dev/null < /dev/null 2>&1"

এবং আপনি সেট করা উচিত। কেবল টাইপিংয়ের ssh-addমাধ্যমেই এখন উপনামটি আহ্বান করা হবে যা সমস্ত পুনঃনির্দেশের জায়গায় আসল কমান্ডটি চাওয়া হবে।

ssh-addএখন সঠিকভাবে আপনি যদি একটি ডায়লগ বক্স সঙ্গে পাসওয়ার্ড জিজ্ঞেস ... তবে শর্ত থাকে যে আপনি এই প্যাকেজগুলি ইনস্টল করা (উবুন্টু বা ডেরাইভেটিভস, তারা অন্যত্র অন্যান্য নামগুলি থাকতে পারে) এক আছে:

  • ssh-askpass
  • ssh-askpass-fullscreen
  • ssh-askpass-gnome
  • ksshaskpath
  • kwalletcli
  • lxqt-openssh-askpass
  • razorqt-openssh-askpasss

এখন, এই সমস্ত জিনিস মানে কি?

এর 2>&1অর্থ ফাইল বর্ণনাকারী # 2 (স্ট্যান্ডার্ড ত্রুটি) একই জায়গায় ফাইল ডেস্ক্রিপ্টর # 1 (স্ট্যান্ডার্ড আউটপুট) এর দিকে নির্দেশিত।

এর > /dev/nullমানে হল স্ট্যান্ডার্ড আউটপুটটিকে পুনর্নির্দেশ /dev/null, যা একটি বিশেষ ফাইল যা এতে লিখিত সমস্ত ডেটা বাতিল করে দেয়।

এর < /dev/nullঅর্থ স্ট্যান্ডার্ড ইনপুট /dev/null( আদর্শ ) এ পুনঃনির্দেশ করুন ।

পার্শ্ব নোট, এবং একটি অফ টপিক কিন্তু সম্পর্কিত নোট হিসাবে, আপনি যদি কখনও কোনও বাশে কোনও পরিষেবা প্রোগ্রাম করতে চান তবে আপনাকে অবশ্যই পরিষেবাটি কী তা মনে করতে হবে, প্রমিতের ইনপুট, আউটপুট এবং ত্রুটিটি বন্ধ রয়েছে যা ব্যাকগ্রাউন্ডে রয়েছে:

service > /dev/null < /dev/null 2>&1 &

লক্ষ্য করুন যে কেবলমাত্র পার্থক্যটিই & এর শেষে যুক্ত হয়েছে (আরও যে আমি ssh-addএকটি তাত্ত্বিকের জন্য কমান্ডটি পরিবর্তন করেছি serviceThose এই কমান্ডগুলি সঠিকভাবে একটি পরিষেবা পটভূমিতে রাখে।


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

আমি দেখি. ঠিক আছে, sshঠিক একইভাবে কাজ করে এবং আমি আগে যে একই উত্তর দিয়েছিলাম তা এখনও প্রযোজ্য। শুধু প্রতিটি occurence প্রতিস্থাপন ssh-addসঙ্গে sshএবং আপনি সেট আছে।
ভিক্টর

আপনি ভুলে গেছেন কেবলমাত্র একটি ছোট্ট বিশদ আছে: আমি যদি ssh এর জন্য স্টিডিন / স্টডআউট বন্ধ করি তবে আমি কীভাবে এসএসএসের মাধ্যমে আদেশ দেব? ;)
gioele

এটি ssh-addআমার পক্ষে কাজ করেছে - পছন্দসই আচরণটি পাওয়ার জন্য আমার স্টাডাউট / স্ট্ডারকে পুনর্নির্দেশের প্রয়োজনও হয়নি, যা ssh-askpassপ্রোগ্রামটি পপআপ করতে হয়েছিল । (এটি ssh-add < /dev/nullযথেষ্ট ছিল))
বেন স্টার্ন

0

আমি যখন আর্চলিনাক্সে seahorse-ssh-askpassপ্যাকেজ ইনস্টল না করে সিহর্স (যা সরবরাহ করে ) ইনস্টল করেছি তখনও আমার একই সমস্যা ছিল gnome-keyring

এই প্যাকেজের সামগ্রীতে gnome-keyring( https://www.archlinux.org/packages/extra/i686/gnome-keyring ) আপনার সমস্যার সমাধান করতে সহায়তা করতে পারে।

যাইহোক, আপনি যদি সমুদ্র ঘোড়া ব্যবহার করতে আপত্তি না করেন, আপনি প্যাকেজগুলি seahorseএবং gnome-keyring(বা আপনার বিতরণের জন্য সমতুল্য ) ও ইনস্টল করতে পারেন । যদি আপনি জিনোম ব্যবহার না করেন তবে অতিরিক্ত পদক্ষেপের প্রয়োজন হতে পারে: https://wiki.archlinux.org/index.php/GNOME_Keering

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