টানেলের মাধ্যমে id_rsa দিয়ে ssh কনফিগারেশন ফাইল সেট আপ করা হচ্ছে


17

আমি দ্বিতীয় মেশিনের সাথে সংযোগটি খোলার জন্য, অন্য একটিটির মধ্য দিয়ে যাওয়ার জন্য এবং তৃতীয় মেশিনে সংযোগের জন্য একটি আইডি_আরসা (যা আমাকে একটি পাসওয়ার্ডের জন্য অনুরোধ করে) ব্যবহার করে একটি বৈধ কনফিগারেশন সেটআপ করার জন্য সংগ্রাম করে যাচ্ছি।

আমি এই প্রশ্নটি অন্য ফোরামে জিজ্ঞাসা করেছি, তবে আমি এমন কোনও উত্তর পাইনি যা খুব সহায়ক বলে বিবেচিত হতে পারে।

আরও ভাল বর্ণিত সমস্যাটি নিম্নরূপ:

Local machine: user1@localhost
Intermediary machine: user1@inter
Remote target: user2@final

সিউডো-টিটি ব্যবহার করে আমি পুরো সংযোগটি করতে সক্ষম:

ssh -t inter ssh user2@final

(এটি আমাকে "ইন্টার" মেশিনে থাকা id_rsa ফাইলের পাসওয়ার্ড জিজ্ঞাসা করবে)

তবে, বিষয়গুলিকে দ্রুত করার জন্য, আমি আমার .ssh / কনফিগারেশন ফাইলটি সেট করতে চাই, যাতে আমি কেবল মেশিনকে "ফাইনাল" ব্যবহার করে এটি ব্যবহার করতে পারি:

ssh final

আমি এতক্ষণ যা পেয়েছি - যা কাজ করে না - তা আমার .ssh / কনফিগারেশন ফাইলে রয়েছে:

Host inter
    User user1
    HostName inter.com
    IdentityFile ~/.ssh/id_rsa

Host final
    User user2
    HostName final.com
    IdentityFile ~/.ssh/id_rsa_2
    ProxyCommand ssh inter nc %h %p

Id_rsa ফাইলটি মাঝের মেশিনে সংযুক্ত করতে ব্যবহৃত হয় (এটির জন্য আমার কোনও পাসওয়ার্ড টাইপ করার প্রয়োজন নেই), এবং id_rsa_2 ফাইলটি মেশিনের সাথে "ফাইনাল" সংযোগ করতে ব্যবহৃত হয় (এটি একটি পাসওয়ার্ডের অনুরোধ করে)।

আমি কিছু LocalForwardএবং / অথবা RemoteForwardক্ষেত্রগুলি মিশ্রন করার চেষ্টা করেছি এবং প্রথম_ দ্বিতীয় মেশিনে id_rsa ফাইলগুলি রাখার চেষ্টা করেছি , তবে কোনও কনফিগারেশনই আমি সফল হতে পারছি না।

PS: থ্রেড থেকে আমি কিছু সহায়তা পাওয়ার চেষ্টা করেছি:

http://www.linuxquestions.org/questions/linux-general-1/proxycommand-on-ssh-config-file-4175433750/

উত্তর:


21

পদ্ধতি 1 (আন্তঃতে ssh-key ব্যবহার করুন)

আপনি যদি প্রমাণীকরণের প্রবাহ ধরে রাখতে চান want

local -- authenticate --> inter -- authenticate (ask password) --> final

এটি .ssh / কনফিগারেশন প্রক্সিহোস্ট দিয়ে করা যায় না।

আপনার যা প্রয়োজন তা হ'ল বাশ শেল ওরফে (আশা করি আপনি ব্যাশ ব্যবহার করছেন)।

ইন ~/.bashrc, নিম্নলিখিত লাইন যুক্ত করুন

alias ssh-final='ssh -t inter ssh user2@final.com'

কমান্ড প্রম্পটে, কেবল নিম্নলিখিতটি টাইপ করুন

ssh-final

finalবিভাগ ~/.ssh/configব্যবহার করা হয় না।

সংযোগের বিশদ (1)

ssh -t inter ssh user2@final.com অনুসরণ হিসাবে দেখুন হতে পারে

local# ssh inter
inter# ssh user2@final.com

localকেবলমাত্র "কথা বলছে" তার সাথে inter। সেখানে মধ্যে কোনো প্রত্যক্ষ বা পরোক্ষ SSH সংযোগ localএবং finallocalশুধু এর আউটপুট প্রদর্শন করা হয় ssh user2@final.com

পদ্ধতি 2 (স্থানীয়ভাবে এসএস-কী ব্যবহার করুন)

একই ssh- কী সহ প্রমাণীকরণ

Host inter
    User user1
    HostName inter.example.com

Host final
    User user2
    Hostname <final.com / final IP Address>
    Port 22
    ForwardAgent yes
    ProxyCommand ssh inter nc %h %p

স্থানীয় কপি ~/.ssh/id_ras.pubকরুন

/home/user1/.ssh/authorized_keys in `inter`
/home/user2/.ssh/authorized_keys in `final`

সংযোগের বিশদ (2)

ssh টানেলিং

আমরা বিশদে যাওয়ার আগে ProxyCommand, নীচের উদাহরণটি দেখি

পদক্ষেপ 1, টার্মিনাল উইন্ডো 1 এ

local# ssh inter -L 2000:final.com:22

পদক্ষেপ 2, টার্মিনাল উইন্ডো 2 এ

local# ssh localhost -p 2000

টার্মিনাল 1-এ, স্থানীয় বন্দর 2000 এবং ফাইনাল ডটকম পোর্ট 22 এর মধ্যে একটি টানেল সেটআপ করা হবে local

টার্মিনাল 2 এ, ssh স্থানীয় পোর্ট 2000 এ সংযোগ স্থাপন করুন, তবে প্রকৃতপক্ষে চূড়ান্ত ডটকম পোর্ট 22 এর সাথে যোগাযোগ করছেন, এটি এসএসডিডি।

টানেলিংয়ের সাথে, দ্বিতীয় ধাপে স্থানীয় ssh ক্লায়েন্ট সরাসরি ফাইনাল ডটকম এসএসডি এর সাথে সংযুক্ত।

স্থানীয় বন্দর 2000 এর "আউটপুট" হ'ল "কাঁচা" এসএসএস ডেমন ট্র্যাফিক।

এই জাতীয় টানেলের সাধারণ ব্যবহার হ'ল অভ্যন্তরীণ ওয়েব সার্ভার বা ইমেল সার্ভারটি অ্যাক্সেস করা। নিম্নলিখিত ওয়েব সার্ভারের জন্য উদাহরণ

local# ssh inter -L 2000:final.com:80

ব্রাউজারে নিম্নলিখিত URL টি ব্যবহার করুন

http://localhost:2000

সুড়ঙ্গটির দুটি শেষ পয়েন্ট হ'ল স্থানীয় বন্দর 2000 এবং চূড়ান্ত ডটকম পোর্ট 80।

টানেলের শেষ পয়েন্ট "এএস আইএস" এর বাইরে আসা ট্রাফিক। সেই "কাঁচা" ট্র্যাফিক কল করতে দেয়।

ProxyCommand

Host final
    User user2
    Hostname <final.com / final IP Address>
    Port 22
    ForwardAgent yes
    ProxyCommand ssh inter nc %h %p

ProxyCommandএটা আরও এক ধাপ গ্রহণ করা। এটি একটি স্থানীয় বন্দর তৈরির ধাপটি এড়িয়ে যায় এবং এটির সাথে সংযোগ স্থাপন করে।

কোনও এসএসএস ক্লায়েন্ট পিছনে প্রদত্ত কমান্ড কার্যকর করে ProxyCommandএবং সেই আদেশের আউটপুটটিকে "কাঁচা" ট্র্যাফিক হিসাবে বিবেচনা করে। এটি স্থানীয় শেষ পয়েন্টে ধরে আছে এবং তারপরে এটির সাথে একটি এসএসএস সংযোগ শুরু করে।

এক কাজ অন্য কাজ করে না কেন?

নিম্নলিখিত আদেশ

ssh inter nc final.com 22

মূলত (1) এর সাথে সংযুক্ত হওয়া inter, তারপরে (2) অন inter, রান কমান্ডের অর্থ nc final.com 22

nc - arbitrary TCP and UDP connections and listens

সুতরাং nc final.com 22চূড়ান্ত ডটকম পোর্ট ২২ এ সংযোগ স্থাপন করবে, সমস্ত আগত ট্র্যাফিক স্ট্যান্ডআউটে প্রিন্ট করবে এবং সমস্ত স্টিডিনকে অন্য দিকে প্রেরণ করবে। এটি এনসি স্টিডিন / আউট এবং ফাইনাল ডটকম পোর্ট 22 এর মধ্যে একটি "টানেল"।

যেহেতু ncssh অধিবেশনের মধ্যেই সঞ্চালিত হয়, এর সমস্ত স্টাডআউট "কাঁচা" ট্র্যাফিক হিসাবে ফিরে এসএসএস ক্লায়েন্টের কাছে চলে যায়। এবং এসএসএস ক্লায়েন্ট এনসি স্টিডিনে ট্র্যাফিক পাস করতে পারে, যা ফাইনাল ডটকম পোর্ট 22 এ শেষ হবে।

উপরের "টানেল" এর মাধ্যমে, স্থানীয় এসএসএস ক্লায়েন্ট final.comসরাসরি সাথে একটি এসএস সেশন শুরু করবে ।

নিম্নলিখিত আদেশ

ssh -t inter ssh user2@final.com

এর সাথে কাজ করে না ProxyCommandকারণ এটির বাইরে থাকা কোনও এসএস ডিমন থেকে "কাঁচা" ট্র্যাফিক নয়। এটি একটি ssh ক্লায়েন্টের stdout । ক্লায়েন্টের সাথে ক্লায়েন্টের কথা বলতে কোনও ব্যবসা হয় না।

বিভিন্ন এসএস-কী (ওপেন আসল কনফিগারেশন) সহ প্রমাণীকরণ

Host inter
    User user1
    HostName inter.com
    IdentityFile ~/.ssh/id_rsa

Host final
    User user2
    HostName final.com
    IdentityFile ~/.ssh/id_rsa_2
    ProxyCommand ssh inter nc %h %p

স্থানীয় কপি ~/.ssh/id_ras.pubকরুন

/home/user1/.ssh/authorized_keys in `inter`

স্থানীয় কপি ~/.ssh/id_ras_2.pubকরুন

/home/user2/.ssh/authorized_keys in `final`

উপরের উভয়টি নিম্নলিখিত ব্যবহারকে সক্ষম করবে

local# ssh final

অতিরিক্ত চেকিং

ভার্বোস ব্যবহার করুন

local# ssh -v final

এটি ssh সমস্যা সনাক্তকরণে সহায়তা করবে।

এনসি চেক করুন

ProxcyCommandনির্বাহ করা হয় ncউপর inter। কিনা পরীক্ষা করুন ncআসলে পাওয়া যায় inter

local# ssh inter
inter# nc final.com 22

আরএসএ কী ঠিকভাবে সেটআপ করা আছে

বিভিন্ন কী-জন্য ব্যবহার করা হবে হয় interএবং final, নিম্নলিখিত ফাইলগুলি স্থানীয় মেশিন মধ্যে উপস্থিত করা উচিত

local# ls ~/.ssh
id_rsa id_rsa_2 id_rsa.pub id_rsa_2.pub

যেহেতু আপনি interইতিমধ্যে ssh করতে পারেন , কী সেটআপটি চেক করুন final। আপনার স্থানীয় মেশিন থেকে

local# ssh -t inter ssh user2@final
final# cat .ssh/authorized_keys

আপনি id_rsa_2.pubসেখানে বিষয়বস্তু দেখতে হবে।


দুঃখিত, আমি এটা উল্লেখ করা উচিত ছিল; আমি আসলে ব্যবহার করে সংযোগ করতে সক্ষম ssh -t, কিন্তু আমি যা করতে চাই তা হ'ল ssh -tশুধুমাত্র কনফিগারেশন ব্যবহার করে আমার যে আচরণটি করা হয়েছে তা অনুকরণ করে .ssh/config
রুবেন্স

আপনার পোস্ট করা কনফিগারেশন ফাইলটিও কাজ করা উচিত। checkingপদক্ষেপটি অতিক্রম করার চেষ্টা করুন । এখানে অবশ্যই কিছু ভুল / ভুল রয়েছে।
জন সিউ

1
সঙ্গে ssh -t, আপনার SSH করার finalথেকে সূচনা হয় inter, যা "প্রায়" হিসাবে একই local# ssh interতারপর inter# ssh final। প্রমাণীকরণের মধ্যে interএবং final। প্রক্সি / এনসি দিয়ে, আপনার এসএসএস ফাইনালটি আপনার স্থানীয় মেশিন থেকে, একটি টানেলের মাধ্যমে, শুরু করা হবে final। প্রমাণীকরণের মধ্যে localএবং final
জন সিউ

আপনার মন্তব্যকে ভিত্তিতে @ রুবেস, আমার মনে হয় আপনি ভুল করছেন যে আপনি এখনও interপ্রমাণীকরণের জন্য ssh-key ব্যবহার করছেন final। Copy / .ssh / id_rsa_2 (স্থানীয় id_rsa লিখে নাও) অনুলিপি id_rsa_2করে দেখুন localএবং আপনার সমস্যাটি সম্ভবত চলে গেছে।
জন সিউ

2
নোট করুন যে ssh2 ncঅন্তর্নির্মিত হয়েছে So সুতরাং পরিবর্তে ProxyCommand ssh gateway nc %h %p, আপনি লিখতে চাই ProxyCommand ssh inter -W %h:%p
ব্যবহারকারী 123444555621

2

আমি কোনও ত্রুটি তালিকাভুক্ত বা ssh -v বিবৃতি দেখিনি যা এটি কোথায় ঝুলছে তা দেখতে সহায়তা করবে।

আরে মানুষ আপনার কাছে এটি প্রায় সঠিক --- স্থানীয় মেশিনে উভয় কী থাকা সর্বোত্তম এবং সুরক্ষিত উপায় machine তারপরে আপনি মধ্যবর্তী পদক্ষেপে কীগুলি না রেখে সংযোগ করতে ssh-এজেন্ট ফরোয়ার্ডিং ব্যবহার করবেন। লগন প্রতি একবার আপনার কী পাসফ্রেজ টাইপ করার প্রয়োজন রয়েছে the

আপনার যদি উবুন্টু (আপনার স্থানীয় মেশিনে) এর মতো আধুনিক / ব্যবহারকারীবান্ধব ওএস থাকে তবে এটি কোনও * ম্যাসেজ * না করে কোনও সমস্যা না করে। আমি পরিচয় ফাইলটি ইচ্ছাকৃতভাবে ছেড়ে দিয়েছি, আপনার এটির প্রয়োজন হবে না।

আপনার কনফিগারেশন ফাইলটি দেখতে এমন হবে:

Host inter
    User user1
    ForwardAgent yes
    HostName inter.com

Host final
    ForwardAgent yes
    User user2
    HostName final.com
    ProxyCommand ssh inter nc %h %p

যদি তা না হয় তবে আপনার ssh-এজেন্ট চলছে কিনা তা নিশ্চিত করার জন্য এই পদক্ষেপগুলি দিয়ে যান:

'ssh-add -l' (lower case L) will list your private keys if any are loaded, or will be blank, or will say can’t connect to ssh-agent, if so, start ssh-agent.
'eval `ssh-agent`' (those are backticks) starts ssh agent
'ssh-add' will add your key… you can add a path argument if you have a key in a non-default area. At this point you will enter your passphrase.

এখানে কীভাবে এটি কাজ করে তা বোঝানোর জন্য একটি দুর্দান্ত গাইড রয়েছে

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