Git এ শেল কমান্ড প্রয়োগ করার সময় ব্যবহারযোগ্য ব্যক্তিগত SSH কী কীভাবে উল্লেখ করবেন?




bash shell (14)

সম্ভবত একটি অস্বাভাবিক পরিস্থিতি, তবে স্থানীয় কম্পিউটার থেকে একটি শেল (git) কমান্ড কার্যকর করার সময় আমি একটি ব্যক্তিগত SSH- কী নির্দিষ্ট করতে চাই।

মূলত এই মত:

git clone [email protected].com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"

অথবা এমনকি ভাল (রুবি):

with_key("/home/christoffer/ssh_keys/theuser") do
  sh("git clone [email protected]com:TheUser/TheProject.git")
end

আমি নেট :: এসএসএইচ সহ একটি রিমোট সার্ভারে সংযোগ করার উদাহরণ দেখেছি যা একটি নির্দিষ্ট ব্যক্তিগত কী ব্যবহার করে, কিন্তু এটি একটি স্থানীয় কমান্ড। এটা কি সম্ভব?


Git 2.3.0 থেকে শুরু করে আমাদেরও একটি সহজ কমান্ড (কোন কনফিগারেশন ফাইল প্রয়োজন নেই):

GIT_SSH_COMMAND='ssh -i private_key_file' git clone [email protected]:repo.git

আপনার মেশিনে ssh পরিষেবাটির জন্য আপনাকে পুনরায় চালু করতে হতে পারে।


My_git_ssh_wrapper এর সামগ্রী:

#!/bin/bash

ssh -i /path/to/ssh/secret/key $1 $2

তারপর আপনি কী করে কী ব্যবহার করতে পারেন:

GIT_SSH=my_git_ssh_wrapper git clone [email protected].com:TheUser/TheProject.git

আপনাকে নিচে একটি ~ / .ssh / config তৈরি করতে হবে

Host <Your bitbucket server>
User <userid>
Hostname <Your bitbucket server as above>
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa<file> This is your private key file

নিচে হিসাবে অনুমতি

-rw------- $HOME/.ssh/config

আপনার জিট (বিড়াল ~ /। এসএসএস / id_rsa_pub [বা simillar নাম] আপনার পাবলিক কী যোগ করুন)

এবং তারপর নীচের ক্লোন ক্লোন

git clone ssh://[email protected].com/userid/test.git

আপনি GIT_SSH পরিবেশ পরিবর্তনশীল ব্যবহার করতে পারেন। কিন্তু আপনাকে শেল স্ক্রিপ্টে ssh এবং বিকল্পগুলি মোড়ানো দরকার।

জিট ম্যানুয়াল দেখুন: আপনার কমান্ড শেল মধ্যে man git


আমার জন্য কৌশলটি http: // hostname পরিবর্তে git @ হোস্টনাম ব্যবহার করা ছিল


আমি zsh ব্যবহার করি এবং বিভিন্ন ল্যাপটপগুলি আমার ল্যাপটপে অন্য কোন উদ্দেশ্যে (যেমন রিমোট সার্ভারগুলিতে অ্যাক্সেস) স্বয়ংক্রিয়ভাবে আমার zsh শেল এর ssh- ssh-agent লোড করা হয়। আমি নিক এর উত্তরটি সংশোধন করেছি এবং আমি এটির একটি রেপোর জন্য ব্যবহার করছি যা প্রায়শই রিফ্রেশ করতে হবে। (এই ক্ষেত্রে এটি আমার dotfiles যা আমি আমার সমস্ত মেশিন জুড়ে একই এবং সর্বশেষ সংস্করণ চাই, যেখানেই আমি কাজ করছি।)

bash -c 'eval `ssh-agent`; ssh-add /home/myname/.dotfiles/gitread; ssh-add -L; cd /home/myname/.dotfiles && git pull; kill $SSH_AGENT_PID'
  • একটি ssh এজেন্ট Spawn
  • এজেন্ট শুধুমাত্র পাঠযোগ্য কী যোগ করুন
  • আমার গিট repo ডিরেক্টরি পরিবর্তন করুন
  • যদি cd repo dir সফল হয়, দূরবর্তী repo থেকে টান
  • SPHned ssh এজেন্ট হত্যা। (আমি চারপাশে lingering এজেন্ট অনেক চাই না।)

উইন্ডোতে জিট ব্যাশের সাহায্যে আপনি নিম্নলিখিত রিপোজিটরি ssh-agent bash -c 'ssh-add "key-address"; git remote add origin "rep-address"' করতে ব্যবহার করতে পারেন ssh-agent bash -c 'ssh-add "key-address"; git remote add origin "rep-address"' ssh-agent bash -c 'ssh-add "key-address"; git remote add origin "rep-address"' ssh-agent bash -c 'ssh-add /d/test/PrivateKey.ppk; git remote add origin [email protected]:test/test.git' ssh-agent bash -c 'ssh-add "key-address"; git remote add origin "rep-address"' উদাহরণস্বরূপ যুক্ত করুন: ssh-agent bash -c 'ssh-add /d/test/PrivateKey.ppk; git remote add origin [email protected]:test/test.git' ssh-agent bash -c 'ssh-add /d/test/PrivateKey.ppk; git remote add origin [email protected]:test/test.git' ড্রাইভ ডি তে কোন ব্যক্তিগত কী, কম্পিউটারের ফোল্ডার পরীক্ষা। এছাড়াও যদি আপনি একটি সংগ্রহস্থল ক্লোন করতে চান তবে আপনি git clone দিয়ে git clone git remote add origin পরিবর্তন করতে পারেন।

গিট ব্যাশে প্রবেশ করার পর, এটি আপনাকে পাসফ্রেজের জন্য জিজ্ঞাসা করবে!

সচেতন থাকবেন যে প্রাইভেট কী ও গোপন প্রাইভেট কী দ্বিমুখী!

আপনি যদি Puttygen দিয়ে আপনার কীগুলি তৈরি করেছেন, তবে আপনাকে অবশ্যই আপনার ব্যক্তিগত কী খোলার জন্য রূপান্তর করতে হবে!


উত্তর এবং comments সমষ্টি, বিভিন্ন কী ফাইলগুলি ব্যবহার করার জন্য গিট সেট আপ করার সর্বোত্তম উপায় এবং তারপরে এটি ভুলে যান, যা একই হোস্টের জন্য বিভিন্ন ব্যবহারকারীদের সমর্থন করে (যেমন একটি ব্যক্তিগত গিথহাউব অ্যাকাউন্ট এবং একটি কাজ এক), যা উইন্ডোজগুলিতে কাজ করে পাশাপাশি, ~/.ssh/config (অথবা c:\Users\<your user>\.ssh\config ) সম্পাদনা করতে এবং একাধিক পরিচয় উল্লেখ করতে হয়:

Host github.com
HostName github.com
IdentityFile /path/to/your/personal/github/private/key
User dandv

Host github-work
HostName github.com
IdentityFile /path/to/your/work/github/private/key
User workuser

তারপরে, আপনার ব্যক্তিগত ব্যবহারকারী হিসাবে একটি প্রকল্প ক্লোন করতে, নিয়মিত git clone কমান্ডটি চালান।

workuser হিসাবে রেপো ক্লোন করতে, git clone [email protected]:company/project.git workuser git clone [email protected]:company/project.git চালান git clone [email protected]:company/project.git


এই সমাধান কেউ আমার জন্য কাজ করে।

পরিবর্তে, আমি @ মার্টিন ভি। লুইসের এসএসএইচ জন্য একটি config ফাইল স্থাপনের উল্লেখ সম্পর্কে বিস্তারিত আলোচনা করি।

SSH ব্যবহারকারীর ~/.ssh/config ফাইলটি সন্ধান করবে। আমি আমার সেটআপ হিসাবে আছে:

Host gitserv
    Hostname remote.server.com
    IdentityFile ~/.ssh/id_rsa.github
    IdentitiesOnly yes # see NOTES below

এবং আমি রিমোট গিট রিপোজিটরি যুক্ত করি:

git remote add origin [email protected]:myrepo.git

এবং তারপর গিট কমান্ড আমার জন্য সাধারণত কাজ।

git push -v origin master

নোট

  • IdentitiesOnly yes প্রতিটি প্রোটোকলের জন্য ডিফল্ট ফাইলের নাম মিলে পরিচয় ফাইল পাঠানোর SSH ডিফল্ট আচরণ প্রতিরোধ করতে হবে। আপনার যদি ~/.ssh/id_rsa নামের একটি ফাইল ~/.ssh/id_rsa যা এই বিকল্পটি ছাড়া আপনার ~/.ssh/id_rsa.github আগে চেষ্টা করা হবে।

তথ্যসূত্র


এই হোস্ট বা ip কে .ssh/config ফাইলে যোগ করার মত ভাল ধারণা:

Host (a space separated list of made up aliases you want to use for the host)
    User git
    Hostname (ip or hostname of git server)
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_(the key you want for this repo)

এখানে বর্ণিত হিসাবে: https://superuser.com/a/912281/607049

আপনি প্রতি-রেপো কনফিগার করতে পারেন:

git config core.sshCommand "ssh -i ~/.ssh/id_rsa_example -F /dev/null"
git pull
git push

এরকম কিছু কাজ করা উচিত (অরিপ দ্বারা প্রস্তাবিত):

ssh-agent bash -c 'ssh-add /somewhere/yourkey; git clone [email protected]:user/project.git'

আপনি যদি subshells পছন্দ করেন তবে আপনি নিম্নলিখিতটি চেষ্টা করতে পারেন (যদিও এটি আরও ভঙ্গুর):

ssh-agent $(ssh-add /somewhere/yourkey; git clone [email protected].com:user/project.git)

গিট এসএসএইচকে আহ্বান করবে যা পরিবেশগত পরিবর্তনশীল দ্বারা তার এজেন্ট খুঁজে পাবে; এই, ঘুরে, মূল লোড হবে।

অন্যথায়, HOME সেটিংটি HOME করতে পারে তবে শর্ত থাকে যে আপনি এমন একটি ডিরেক্টরি সেটআপ করতে ইচ্ছুক যা HOME হিসাবে শুধুমাত্র .ssh ডিরেক্টরি রয়েছে; এটিতে একটি পরিচয় pub থাকতে পারে, অথবা একটি কনফিগারেশন ফাইল সেটিং আইডেন্টিটিফিল থাকতে পারে।


যখন আপনি একটি স্বাভাবিক অনুরোধের সাথে জিথবুকে সংযোগ করতে চান ( git pull origin master ), ~/.ssh/config * হিসাবে আমার জন্য কাজ করে, অন্য কোনও হোস্ট (বলুন, "জিতুব" বা "জিবি") wasn ' টি কাজ করছে।

Host *
    User git
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_xxx

~/.ssh/config সম্পর্কে অন্যান্য মানুষের পরামর্শ অতিরিক্ত জটিল। এটি সহজ হিসাবে হতে পারে:

Host github.com
  IdentityFile ~/.ssh/github_rsa




ssh