এসএসএইচ এজেন্ট বিভিন্ন ব্যবহারকারী নাম এবং বিভিন্ন কী ব্যবহার করে ফরোয়ার্ড করছে


19

একটি খুব অনুরূপ প্রশ্ন আছে যে উত্তর যদি এই প্রশ্নের উত্তর হতে পারে। দুর্ভাগ্যক্রমে এটি "আমি যে প্রশ্নটি জিজ্ঞাসা করেছি তার উত্তর দেওয়ার দরকার নেই কারণ সমস্যাটি আমি যা ভাচ্ছিলাম তা এটি নয়" "

সেটআপ

  1. সার্ভার বেসেশন.সি 2 মাধ্যমে আমার ওয়ার্কস্টেশন থেকে একটি এসএসএস সংযোগ গ্রহণ করেssh -i mykey.pem myname@bastion.ec2
  2. সার্ভার service1.ec2 SSH সংযোগ গ্রহণ করে শুধুমাত্র bastion.ec2 থেকে মাধ্যমেssh -i sharedkey.pem shareduser@service1.ec2

প্রয়োজনীয়তা

  1. উভয় কী কেবলমাত্র আমার ওয়ার্কস্টেশনে রয়েছে তাই কীটি অনুলিপি না করে আমি আসলে দ্বিতীয় কমান্ডটি করতে পারি না
  2. সুরক্ষার কারণে আমি বেসশন.সি 2-তে ssh কী অনুলিপি না করে ssh-এজেন্ট ফরোয়ার্ডিং ব্যবহার করতে চাই

সমাধান

এখানেই আপনি এসেছেন the দ্বিতীয় সংযোগের জন্য আমি কীভাবে একটি আলাদা কী ফরোয়ার্ড করব?

যদি ভাগ করা ব্যবহারকারীর এটিতে মাইকি.পব থাকে তবে এটি ~/.ssh/authorized_keysকাজ করবে:

ssh -i mykey.pem myname@bastion.ec2 ssh shareduser@service1.ec2

যাইহোক, আমি চাই না যে প্রতিটি ব্যবহারকারীর প্রত্যেকটি সার্ভারে তাদের সর্বজনীন কী রাখা উচিত।

উত্তর:


22

ধাপ 1

আপনার স্থানীয় এজেন্ট প্রস্তুত কিনা তা নিশ্চিত করুন

আপনার মূল পথটি নির্দিষ্ট করে না দিয়ে বা পাসওয়ার্ডের জন্য আপনাকে জিজ্ঞাসা না করেই আপনি আপনার বেস্ট সার্ভারে প্রবেশ করতে পারেন , এর অর্থ এই নয় যে আপনার এসএসএল এজেন্ট আপনার চালাচ্ছে এবং ধরে রেখেছে। কিছু আধুনিক ওএস (যেমন: ওএসএক্স) আপনার জন্য এটি পরিচালনা করে।

আপনার স্থানীয় মেশিনে

$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem

আকার 1

তার মানে আপনার এজেন্ট চলছে এবং আপনার চাবি আছে।

$ ssh-add -L
The agent has no identities.

fig.2

এর অর্থ আপনি নিজের এজেন্টে কোনও কী যুক্ত করেন নি। এটি দিয়ে ঠিক করুন:

ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem

fig.3

ধাপ ২

আপনার দূরবর্তী এজেন্ট প্রস্তুত কিনা তা নিশ্চিত করুন

আপনার Bastion সার্ভারে, SSH থেকে চেক পুনরাবৃত্তি Fig.1 & fig.2 । তবে আপনি যে ত্রুটিটি পাওয়ার সম্ভাবনা বেশি তা হ'ল:

$ ssh-add -L
Could not open a connection to your authentication agent.

fig.4

সম্ভবত এটির অর্থ হ'ল আপনার এসএসএইচ ক্লায়েন্ট আপনার প্রমাণীকরণ এজেন্ট সংযোগটি ফরোয়ার্ড করছে না।

আপনি -Aপতাকাটি দিয়ে জোর করতে পারেন (যতক্ষণ না সার্ভারে থাকা sshd কনফিগারেশন এটির অনুমতি দেয়, এটি পূর্বনির্ধারিত )।

$ ssh -A bastion.ec2

fig.5

ধাপ 3

আপনি সঠিক কীগুলি ব্যবহার করছেন তা নিশ্চিত করুন

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

আপনার ব্যক্তিগত কীতে পাবলিক কাউন্টারটিকে আউটপুট দিন:

$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13

fig.6

এগুলি ssh-add -Lআপনার ==কাছাকাছি থেকে শেষ পর্যন্ত যা দেখছিল তার সমান হওয়া উচিত ।

এখন কোনও না কোনও উপায় আপনাকে সেই বাক্সে toোকাতে হবে যা আপনি সংযোগ করতে ব্যর্থ হচ্ছেন এবং $HOME/.ssh/authorized_keysআপনি যে ব্যবহারকারী হিসাবে সংযোগের চেষ্টা করছেন তার ফাইলের বিষয়বস্তুটি সন্ধান করতে হবে। আপনাকে নিশ্চিত করতে হবে যে উপরের কমান্ডটি দিয়ে আপনি যে সর্বজনীন কীটি আউটপুট দিয়েছেন সেগুলি নিজেই একটি লাইনে সেই ফাইলটিতে রয়েছে। আপনি বিশ্বাস করতে পারবেন না যে sharedkey.pubব্রো 2 কিউব আপনার ইমেল করেছেন তা ঠিক। যাচাই করুন! এটির জন্য আপনাকে অনুমোদিত_কিজ ফাইলটি আনতে বা রুট অ্যাক্সেস পাওয়ার জন্য অন্য কোনও ব্যক্তির পেতে প্রয়োজন হতে পারে যারা সেই ব্যবহারকারী হিসাবে এসএসএইচ করতে পারেন। যদি আপনি এ পর্যন্ত চলে এসেছেন এবং এটি এখনও কাজ না করে, আপনি শর্টকাট নেওয়ার বাইরে।

পদক্ষেপ 4

এটি সহজ কর

আশাকরি উপরের পদক্ষেপগুলি আপনাকে পেয়েছে Now আপনি এখন যতক্ষণ এই ওয়ার্কস্টেশনটি ব্যবহার করছেন ততক্ষণ এই মাথা ব্যাথা সরিয়ে দেওয়া যাক।

আপনার স্থানীয় ssh- ক্লায়েন্ট কনফিগার করুন

Host *
    # A lot of people put an IdentityFile line in this Host * section.
    # Don't do that unless you will use only 1 key everywhere forever.
    #IdentityFile id_rsa

Host bastion.ec2
    # You want to make sure you always forward your agent to this host.
    # But don't forward to untrusted hosts. So don't put it in Host *
    ForwardAgent yes
    # Go a head and put the IP here in case DNS ever fails you.
    # Comment it out if you want. Having it recorded is a good backup.
    HostName 172.31.0.1
    # You don't want to create a proxy loop later, so be explicit here.
    ProxyCommand none
    # SSH should try using all keys in your .ssh folder, but if you
    # know you want this key, being explicit speeds authentication.
    IdentityFile ~/.ssh/mykey.pem

# Connect effortlessly by hostname or IP address
# This assumes that your internal DNS uses the fake TLD ec2
# This assumes that 172.31.0.0 is your C-Class subnet
Host *.ec2 172.31.*
    # This command says proxy all ssh connections through bastion as if
    # you had done an ssh -A
    ProxyCommand ssh -W %h:%p bastion.ec2
    ForwardAgent yes
    # These next lines are documentation you leave as a love letter to
    # your future self when all else fails or you have to help a
    # coworker and decide to look at your own config.
    # ssh-add ~/.ssh/*.pem
    # ssh -At bastion.ecs ssh admin@172.31.18.19

fig.7

যদি আপনি চিত্র 7 থেকে অন্য কিছু না নেন তবে এটি ProxyCommand& এর সঠিক ব্যবহার হওয়া উচিত ForwardAgent

আপনার .বাশ_প্রফাইলে স্বয়ংক্রিয়ভাবে পপুলেট করুন

ssh-addপ্রতিবার আপনি আপনার মেশিনে লগইন করার সময় আপনাকে ম্যানুয়ালি করতে হবে না । ~/.bash_profileএমন একটি স্ক্রিপ্ট যা প্রতিবার আপনি লগইন করুন ** runs ডুমুর থেকে লাইন রাখুন 3 সেখানে এবং আপনার সর্বদা আপনার এজেন্ট প্রস্তুত থাকা উচিত।

** এটিকে বিভ্রান্ত করবেন না .bashrcযা প্রতিটি নতুন [ইন্টারেক্টিভ] টার্মিনালের জন্য চলে। আপনি আপনার সমস্ত টার্মিনাল সেশন বন্ধ করে দিলেও আপনার এজেন্ট চলতে থাকে। আপনার কীগুলি পুনরায় লোড করার দরকার নেই

.Bash_profile ব্যবহারের বিকল্প

আমি একটি গিস্টও তৈরি করেছি যা একটি ওএসএক্স / ম্যাকওএস লঞ্চ এজেন্ট যুক্ত করেssh-agentবুট শুরু করার জন্য আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন । এটি ইনস্টল করা খুব সহজ:

curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash

পদক্ষেপ 2: আপনি বাধ্য করতে পারে ForwardAgent yesসঙ্গে -Aহোস্ট এটা নামঞ্জুর করে পারেন।
dlamblin

ধন্যবাদ @ ডালামব্লিন, আমি প্রাসঙ্গিক তথ্য এবং এসএসডি ডকুমেন্টেশনের একটি লিঙ্ক যুক্ত করেছি।
ব্রুনো ব্রোনোস্কি

1

এখানেই আপনি এসেছেন the দ্বিতীয় সংযোগের জন্য আমি কীভাবে একটি আলাদা কী ফরোয়ার্ড করব?

আপনি কীগুলি ফরোয়ার্ড করবেন না। আপনি এজেন্ট ফরওয়ার্ড করেন এবং এটির প্রথম জাম্পে আপনি প্রমাণীকরণের জন্য ব্যবহার করছেন তার থেকে সম্পূর্ণ স্বতন্ত্র কী থাকতে পারে। আপনার এজেন্টের কীগুলি ব্যবহার করে চেক করুন ssh-add -L

তবে আরও ভাল, সংযোগটি ProxyCommand ssh -W %h:%p myname@bastion.ec2চালিয়ে যান, যা এজেন্টকে ফরোয়ার্ড করার প্রয়োজনীয়তা, হিপ বা কমান্ড-লাইন বিকল্পগুলি এবং তাত্ক্ষণিক হোস্টের কাছ থেকে প্রমাণীকরণের প্রয়োজনীয়তা এড়াতে পারে।

আপনি এটিকে কেবল আপনার কনফিগারেশনে রাখতে পারেন (দেখুন man ssh_config)।


1
ভাগ্যক্রমে আমি জানি আপনি এখানে কী বিষয়ে কথা বলছেন, কিন্তু গড় ব্যবহারকারী তা করেন না। আপনি "আপনার ফরোয়ার্ড এজেন্টদের, কীগুলি নয়" জিনিসটির সাথে শব্দার্থবিজ্ঞানের বিতর্ক করছেন। আপনি আমাকে যথেষ্ট পরিমাণে যেতে পেরেছিলেন যে আমি এটি সমাধান করতে পেরেছি তাই আমি নিজের উত্তর যুক্ত করার আগে আপনাকে উত্তরটি সংশোধন করার সুযোগ দিতে চাই। ইঙ্গিত: ssh-add mykey.pem sharedkey.pemদিয়ে তারপর নিশ্চিত ssh-add -Lতারপরssh -At myname@bastion.ec2 ssh shareduser@service1.ec2
ব্রুনো Bronosky
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.