অন্য মেশিনে ssh কী অনুলিপি করুন যাতে আমি সেখানে GitHub ব্যবহার করতে পারি?


12

আমার কাছে একটি রিমোট সার্ভার রয়েছে। আমি ইতিমধ্যে সফলভাবে সেই রিমোট সার্ভারে স্ল্যাশ করতে পারি - আমার কী authorized_keysদূরবর্তী সার্ভারে রয়েছে।

এখন আমি গিটহাব থেকে সরাসরি সেই দূরবর্তী সার্ভারে টানতে চাই। আমি permission denied (publickey)যখন ssh -T git@github.comরিমোট সার্ভারে চেষ্টা করি তখন পাচ্ছি ।

আমি কি id_rsa.pubআমার স্থানীয় মেশিন থেকে সরাসরি রিমোট সার্ভারে অনুলিপি করা উচিত , বা এটি বিপজ্জনক?

যদি এই উত্তরটি হয় তবে এটি করার সর্বোত্তম উপায় কী?

বা আমি কি রিমোট সার্ভারে একটি নতুন পাবলিক কী উত্পন্ন করব, এবং এটি আমার গিথুব অ্যাকোকন্টে যুক্ত করব?

হালনাগাদ:

একটি ভার্বোজ এসএসএস থেকে আউটপুট এখানে দেওয়া হয়েছে:

~$ ssh -Tv git@github.com
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

আমি আমার সার্ভারের আইপি ঠিকানাটি ব্যবহার করে কেবল ssh এজেন্ট ফরওয়ার্ডিং সেটআপ করার চেষ্টা করেছি: বিকাশকারী / অ্যাসিথডব / গুইডস / ইউজিং-এসএইচ- এজেন্ট- ফরওয়ার্ডিং তবে আমি এখনও Permission denied (publickey)রিমোট মেশিনে উঠছি ।
রিচার্ড

1
ssh কমান্ডে একটি ভার্বোস বিকল্প রয়েছে, আমি মনে করি এটি আপনাকে বলতে পারে এটি কী কী ফাইলগুলি আসলে চেষ্টা করছে, এটি আমাকে কয়েকবার সহায়তা করেছে।
Allman

উত্তর:


4

id_rsa.pubএটি কোনো বাস্তব বিপদ ছাড়া যে কোন জায়গায় কপি করা যেতে পারে। এটি আপনার সর্বজনীন কী এবং এটি এর মতো জিনিসগুলির জন্য বোঝানো হয়। এটি কী-পেয়ারের অর্ধেক অংশ এবং আপনি যে জায়গাতে অ্যাক্সেস করতে চান সেগুলি দিয়ে ভাগ করে নেওয়া হল আপনি কীভাবে ব্যক্তিগত কীটি কাজ করতে পারবেন।

দূরবর্তী লগইন করার অনুমতি দেওয়ার জন্য, আপনার সর্বজনীন কী authorized_keys( authorized_keys2কিছু সিস্টেমে) তালিকাভুক্ত করা দরকার । এই বিন্যাসে প্রতিটি লাইনের একটি কী:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

এটি অর্জন করতে, একবার এটি অনুলিপি করার পরে, কেবল এটির authorized_keysমতো ফাইলে এটি যুক্ত করুন :cat id_rsa.pub >> ~/.ssh/authorized_keys

বেশিরভাগ বুদ্ধিমান সিস্টেমে কাপুরুষোচিতভাবে আপনাকে কী-ভিত্তিক লগইন ব্যবহার করার অনুমতি দিতে অস্বীকার করবে যদি .sshফোল্ডারে খুব বেশি আলগা অনুমতি দেয়। ফোল্ডারটি হওয়া উচিত 700, সুতরাং আপনার যদি এখনও সমস্যা হয়:chmod 700 ~/.ssh

এছাড়াও, .sshফোল্ডারে ফাইলগুলি 600 হতে হবে:chmod 600 ~/.ssh


সম্পাদনা 1:

ফাইলটি নিজেই, id_rsa.pubদূরবর্তী সার্ভারে নিজের প্রয়োজন হয় না। অংশ হিসাবে শুধুমাত্র বিষয়বস্তু authorized_keysssh -vT git@github.comভার্বোজ লগিং সক্ষম করার জন্য আমি দৌড়ানোর পরামর্শ দিচ্ছি , যাতে এটি ঠিক কী অনুমতি সম্পর্কে অভিযোগ করে তা আপনি দেখতে পারেন।

সম্পাদনা 2:

এর অর্থ হল যে অফার করা কীগুলির কোনওটিই রিমোট সার্ভারের ফাইলে নেই। আপনি যা দেখতে চান তা হ'ল এইরকম:

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

পরীক্ষা করার বিষয়গুলি:

  • আপনি যে রিমোটে যুক্ত করেছেন এমন জনসাধারণের কীটির সাথে মেলে এমন একটি ব্যক্তিগত কীটি নিশ্চিত করুন authorized_keys
  • আপনি যে লগ ইন করার চেষ্টা করছেন তার ব্যবহারকারীর নামটি কী (মেজাজী কী এর শেষ অংশ হওয়া উচিত) সাথে মেলে তা নিশ্চিত করুন
  • নাম বদলে authorized_keysদেওয়ার চেষ্টা করুনauthorized_keys2

ধন্যবাদ। আমার সর্বজনীন কীটি ~/.ssh/authorized_keysদূরবর্তী সার্ভারে তালিকাভুক্ত রয়েছে - আমি এটি ব্যবহার করে যুক্ত করেছি cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys"। তারপরে রিমোটে ছোটাছুটি করে দৌড়ে গিয়েছিলাম ~$ chmod 700 ~/.ssh এবং $ chmod 600 ~/.ssh/authorized_keysতবুও Permission denied (publickey)যখন আমি গিথুবগুলিতে ছাড়ে যাওয়ার চেষ্টা করি তখনও তা পেতে পারি। আমি কি পুরো id_rsa.pubফাইলটি রিমোট মেশিনে অনুলিপি করব ?
রিচার্ড

@ রিচার্ড আপনার নিজের ফাইলের দরকার নেই, না। যদিও আমি এটি প্রয়োজন সেক্ষেত্রে .ssh ফোল্ডারে রাখতে চাই। তবে এটির প্রয়োজন নেই, এটি আমি যা কিছু করি। আমি কীভাবে ssh এর সাথে অভিযোগ করছে ঠিক তা দেখতে স্যুইচ sshদিয়ে আপনার প্রশ্নে বর্ণিত কমান্ডটি চালানোর পরামর্শ দিচ্ছি -v
জারমুন্ড

সম্পাদনা করার জন্য ধন্যবাদ 2 আমি প্রথম বুলেট পয়েন্ট কীভাবে করব তা নিশ্চিত নই - check that one of the private keys...- এখানে আমার কী করা উচিত?
রিচার্ড

পয়েন্ট ২-এ, আপনি কী চাচ্ছেন আমার গিটহাব ব্যবহারকারীর নামটি মিলবে? এটি এর মতো কিছু দেখায় না :)
রিচার্ড

জিনিসটি হ'ল আমি আমার স্থানীয় মেশিন থেকে গিটহাব থেকে টানতে এবং টানতে এই একই পাবলিক কীটি ব্যবহার করতে পারি, সুতরাং গিটহাবকে অবশ্যই এটি ঠিক আছে ... ভাবা উচিত?
রিচার্ড

2
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

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

ssh -i /path/to/some_key -Tv git@github.com

রিমোট সার্ভারে যে ফাইলটি আমি গিথুব থেকে চালাবার চেষ্টা করছি তাতে কী ফাইলটি বিদ্যমান নেই, তবে এটি এতে রয়েছে authorized_keys। এটি কি যথেষ্ট বা আমার কী ফাইলটি সেখানেও অনুলিপি করা দরকার?
রিচার্ড

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

-আই পতাকা আমাকে সমস্যার সমাধান করতে সহায়তা করেছে! আমি এসএসএস ফোল্ডারটি অন্য কম্পিউটারে অনুলিপি করে রিমোট গিট ব্যবহার করার চেষ্টা করছিলাম, তবে প্রত্যাখ্যান করা হয়েছিল। -আমি দিন বাঁচিয়েছি!
পলজোহন 32

2

গিথুবকে অনুমোদনের জন্য সার্ভারটির আপনার ব্যক্তিগত কী প্রয়োজন। আপনার সার্বজনীন কী, যেমন এর নাম অনুসারে প্রকাশ্য হিসাবে গণ্য করা হয় তাই এটি প্রমাণীকরণের পক্ষে পর্যাপ্ত হতে পারে না।

আপনার যদি ssh এর মাধ্যমে সংযুক্ত না করে দূরবর্তী সার্ভারে গিথুব ব্যবহার করার প্রয়োজন না হয় তবে আপনার ssh-এজেন্ট ফরোয়ার্ডিং ব্যবহার করা উচিত। এর জন্য একটি গাইড গিথুব উপলভ্য: https://developer.github.com/guides/using-ssh-agent-forwarding/

অন্যথায়, আপনার একটি নতুন কী তৈরি করা উচিত এবং এটি আপনার অ্যাকাউন্টে লিঙ্ক করা উচিত।


0

আপনি সরাসরি কমান্ডটি রাখতে পারেন।

$ বিড়াল ~ / .ssh / id_rsa.pub

আপনার যদি ssh কী ইতিমধ্যে উপস্থিত থাকে তবে তা এটি প্রদর্শিত হবে। অন্যথায় এটি ত্রুটি দেয়। আপনাকে নতুন কী যুক্ত করতে হবে।

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