কীভাবে জিপিজিকে পাসওয়ার্ডের জন্য অনুরোধ করার জন্য কনসোল-মোড প্যান্ট্রি ব্যবহার করতে বাধ্য করবেন?


75

কনসোল-ভিত্তিক পরিবেশ যেমন ssh সেশনগুলি থেকে জিপিজি ব্যবহার করা ব্যর্থ হয় কারণ এসএসএইচ সেশনে জিটিকে পেন্ট্রিট্রি ডায়ালগটি প্রদর্শিত হতে পারে না।

আমি চেষ্টা করেছি unset DISPLAYকিন্তু তাতে কোন লাভ হয়নি। জিপিজি কমান্ড লাইন বিকল্পগুলি প্যান্ট্রিটিকে কনসোল-মোডে বাধ্য করার জন্য একটি সুইচ অন্তর্ভুক্ত করে না।

পুরানো জিপিজি সংস্করণগুলি একটি পাঠ্য-ভিত্তিক প্রম্পট দেয় যা এসএসএইচ সেশনে দুর্দান্ত কাজ করেছিল তবে আপগ্রেড করার পরে এটি কেবল ব্যর্থ হয়।

নেই --textmodeকমান্ড লাইন সুইচ কিন্তু দৃশ্যত, এটা অন্য কিছু নয়।

দূরবর্তী সেশনের জন্য প্লেইন-পাঠ্য পিন এন্ট্রি পাওয়ার সঠিক এবং পরিষ্কার উপায় কী হবে?


DISPLAY="" gpg2 ...আমাকে সহায়তা করেছিল, আমি প্যান্ট্রি-অভিশাপগুলি + প্যান্ট্রি-টিটি পূর্বেও ইনস্টল করেছি, তারা
কড়াভাবে

উত্তর:


89

পেন্ট্রিটি স্থায়ীভাবে পরিবর্তন করতে, নিম্নলিখিতগুলিতে আপনার যুক্ত করুন ~/.gnupg/gpg-agent.conf:

pinentry-program /usr/bin/pinentry-tty

(পুরাতন সংস্করণগুলিতে যা পেন্ট্রিট্রি-টিটির অভাব রয়েছে, একটি 'পূর্ণ-টার্মিনাল' ডায়ালগ উইন্ডোর জন্য প্যান্ট্রি-অভিশাপ ব্যবহার করুন))

জিপিজি এজেন্টকে কনফিগারেশন পুনরায় লোড করতে বলুন:

gpg-connect-agent reloadagent /bye

9
এটি সম্পূর্ণ "বুদ্ধিমান" নয়। সাধারণত, gpg-agentনিজেই উপস্থিতি বা অভাব সনাক্ত করে উপযুক্ত $DISPLAYপেন্ট্রিটি বেছে নিতে হবে ...
মাধ্যাকর্ষণ

6
এজেন্ট সম্ভবত চলমান জর্জনের উপস্থিতি সনাক্ত করতে সক্ষম। তবে DISPLAYসংজ্ঞায়িত হওয়ার অর্থ এই নয় যে আমি এটি ব্যবহার করতে পারি বা এটি ব্যবহার করতে চাই, উদাহরণস্বরূপ, যখন এসএসএইচ এর সাথে সংযুক্ত থাকে।
সিসিপিজা

4
@ এলএফএক্সগ্রোভ: সমস্যাটি হ'ল এটি আপনার টিটিওয়াইয়ের suমালিকানা পরিবর্তন করে না, সুতরাং আপনাকে chownএটি ম্যানুয়ালি করা দরকার । এই নিবন্ধটি দেখুন ।
রাফলেউইন্ড

2
@ স্টারেক্স: আপনি একটি তৈরি করুন।
মাধ্যাকর্ষণ

3
অন্য টিপ: সমস্ত উপলব্ধ বিকল্প দেখতে টাইপ করুন ls /usr/bin | grep pinentry। আমি দেখতে pinentry, pinentry-curses, pinentry-emacs, pinentry-gnome3, pinentry-gtk2, pinentry-qtএবং pinentry-tty। আপনার যদি $DISPLAYসমস্যাটির অভাব না থাকে তবে আপনি যেটিকে আপনার পক্ষে সবচেয়ে ভাল উপযুক্ত এটি চয়ন করতে পারেন ।
জেফরি লেবোস্কি

8

পাসওয়ার্ড ছাড়াই সিস্টেম অ্যাকাউন্টে জিপিজি 2 (২.১.১১) ব্যবহার করে একটি প্রাইভেট কী তৈরি এবং ইনস্টল করার চেষ্টা করার সময় আমি উবুন্টু ১.0.০৪.৩ এ এই সমস্যাটি পেয়েছিলাম এবং এসএসএস-র উপরের কোনও অ্যাকাউন্টে। কিছুই দেওয়ার কাজ হয়নি:

জিপিজি: কী FE17AE6D / FE17AE6D: এজেন্টকে প্রেরণে ত্রুটি: অনুমতি অস্বীকার করেছে
জিপিজি: ত্রুটি নির্মাণে স্কি অ্যারে: অনুমতি অস্বীকার করেছে

আমি তখন পাওয়া এই যা আমার জন্য কাজ, সংক্ষেপে তাই হয়:

pico ~/.gnupg/gpg-agent.conf
# add: allow-loopback-pinentry
gpg-connect-agent reloadagent /bye
gpg2 --pinentry-mode loopback --import private.key


4

Gpg 2.2.4 এর ডিফল্ট ইনস্টলেশন সহ উবুন্টু 18.04-এ আমার আছে

/usr/bin/pinentry
/usr/bin/pinentry-gnome3
/usr/bin/pinentry-gtk-2
/usr/bin/pinentry-x11

আমি একটি পাঠ্য-ভিত্তিক পিন এন্ট্রি করতে নিম্নলিখিতটি করতে সক্ষম হয়েছি:

export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye >/dev/null

3

আপনার যদি এটি না থাকে তবে pinentry-cursesyum বা apt-get দিয়ে ইনস্টল করুন ।

তারপরে, চালান:

sudo update-alternatives --config pinentry

এবং তালিকা থেকে প্যান্ট্রি-অভিশাপগুলি নির্বাচন করুন।


2

আমি আমার উত্তর এখানে থেকে অনুলিপি করব ...

তাকিয়ে man pinentry-gnome3, আমি এটি দেখতে:

   pinentry-gnome3  implements  a PIN entry dialog based on GNOME 3, which
   aims to follow the GNOME Human Interface Guidelines as closely as  pos‐
   sible.   If the X Window System is not active then an alternative text-
   mode dialog will be used.  There are other flavors that  implement  PIN
   entry dialogs using other tool kits.

দুর্ভাগ্যক্রমে, এই পাঠ্য-মোড ফ্যালব্যাকটি আমার পক্ষে কাজ করে না। মনে হচ্ছে অন্যদেরও একই সমস্যা আছে । যাইহোক, এই মন্তব্যটি আমার উত্সাহিত একটি ভিন্ন গুই পিন-এন্ট্রি প্রোগ্রাম চেষ্টা: pinentry-gtk2। আপনি এই মত পরিবর্তন করতে পারেন:

> sudo update-alternatives --config pinentry
There are 3 choices for the alternative pinentry (providing /usr/bin/pinentry).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/bin/pinentry-gnome3   90        auto mode
  1            /usr/bin/pinentry-curses   50        manual mode
  2            /usr/bin/pinentry-gnome3   90        manual mode
  3            /usr/bin/pinentry-gtk-2    85        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/pinentry-gtk-2 to provide /usr/bin/pinentry (pinentry) in manual mode

একবার আমি স্যুইচ করেছি, এটি আমার পক্ষে পুরোপুরি কাজ করেছে! ডেস্কটপের একটি টার্মিনালে এটি জিইউআই পাসওয়ার্ড এন্ট্রি ব্যবহার করবে তবে আমি যখন আমার মেশিনে প্রবেশ করব তখন এটি একটি পাঠ্য-মোডের পাসওয়ার্ড এন্ট্রি ব্যবহার করবে।


1

প্যান্ট্রি পপআপ প্রতিরোধ করতে আপনি পারেন ssh localhost। বিকল্পভাবে X11 অক্ষম করা, -x Disables X11 forwarding.নীচের পুরো উদাহরণটি দেখুন।

patrick@patrick-C504:~$ ssh localhost
patrick@localhost's password: 
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-68-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Mon Nov 16 22:48:53 2015 from localhost
patrick@patrick-C504:~$ gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Foo
Name must be at least 5 characters long
Real name: FooBar
Email address: foorbar@foo.bar
Comment: 
You selected this USER-ID:
    "FooBar <foorbar@foo.bar>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

gpg: gpg-agent is not available in this session
Enter passphrase:

3
কোন এক্স 11 বৈশিষ্ট্যগুলি বিশেষত অক্ষম করা উচিত? আমি আমার প্রশ্নের উত্তর ব্যক্তিগতভাবে জানি, লেখক তা করেন না, সুতরাং এই তথ্য ছাড়া উত্তরটি অসম্পূর্ণ বলে মনে হয়।
রামহাউন্ড

স্থানীয় হোস্টে ssh'ing আমার পক্ষে যথেষ্ট ছিল, তবে allyচ্ছিকভাবে -x Disables X11 forwarding.কোনও এক্স 11 ফরওয়ার্ডিং প্রতিরোধ করা উচিত। উত্তর আপডেট করা হয়।
PvdL

আমি এই সমাধানটিকে প্রাধান্য দিচ্ছি যে, এক্স-প্যান্ট্রি -১-এর উপরে পেন্টিস্ট্রি না দেখানো হয় - আমি সাধারণত আমার ল্যাপটপে শারীরিকভাবে যেখানে এক্স পেন্ট্রিটি চাই (তাই আমি সারাক্ষণ কোনও কনফাইস ফাইল সম্পাদনা করতে চাই না) তবে যদি আমি এর মধ্যে এসএসএস-এক্স এর সাথে ঘটতে চাই আমি এখনও একটি অভিশাপের উপাসনা চাই। অবশ্যই, আদর্শভাবে, gtk উপাসনাটি আসলে ssh -X- এর উপর কাজ করবে: - /
অঘটনিত

1

আমি পিভিডিএলের উত্তরে "পুরো উদাহরণ" পেয়েছি কিছুটা বিভ্রান্তিকর, আমি যা করি তা এখানে:

ssh -X machine
# work hack hack work until I need something from gpg
ssh -x localhost -p$port
gpg2 --decrypt file.gpg
# enter password to pinentry
exit
# now the key is unlocked in gpg-agent, and I can keep decrypting files
# from my X ssh session without being asked for the password

0

আপনি যদি করেন export GPG_TTY=$(tty)এবং unset DISPLAYএটি পাসফ্রেজের জন্য জিজ্ঞাসা করে একটি টিএলআই ডায়ালগ বক্স দেবে। সঠিক পাসফ্রেজে টাইপ করা এটি ডিক্রিপ্ট করে।

আপনি যদি জিপিজিটিটিটিওয়ির উপরের রফতানি না করেন এবং ডিসপ্লে সেট না করে থাকেন তবে এটি এক্স উইন্ডোজ ব্যবহারের প্রত্যাশা করে। আপনি যদি এমএস-উইন্ডোজ সিস্টেম থেকে এক্স 11 ফরওয়ার্ডিং চালু করে আপনার সেশনটি (যেমন পুটিটিওয়াই) চালু করেন তবে এটি আপনার এমএস উইন্ডোজ সিস্টেমে এক্স-উইন্ডো ডায়ালগটি প্রেরণ করতে চায়। আপনার এমএস-উইন্ডোজ বাক্সে পাসফ্রেজের জন্য এক্স-উইন্ডো প্রম্পটটি প্রেরণের জন্য আপনি উইন্ডোজে এক্সিড বা সিগউইন / এক্স এর মতো এক্স এমুলেটর ব্যবহার করতে পারেন।

তবে, আপনি GPG_TTY সেট করতে এবং DISPLAY আনসেট করার প্রয়োজন নেই এবং --batchবিকল্পের সাথে কমান্ড লাইনটি চালিয়ে এবং বিকল্পটির সাথে পাসফ্রেজটি রেখে টিএলআই বা জিইউআই পেয়ে যাবেন --passphrase:

gpg --batch --passphrase "<passphrase>" -o "<decrypted output file name>" --decrypt "<encrypted input file name>"

সমস্ত 3 টি পদ্ধতি আজ আমার জন্য RHEL6 চলমান gnupg2 এ কাজ করেছে।


2
রোক হোয়াইটের উত্তর অনুসারে , export GPG_TTY=$(tty)যথেষ্ট। আপনি কি চেষ্টা করেছেন? আপনি একটি রেফারেন্স যে বলছেন যে আছে unset DISPLAYহয় এছাড়াও প্রয়োজনীয়? পিএস লোকেরা কমান্ড লাইনে পাসফ্রেস রাখতে পছন্দ করে না।
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.