গিট ক্লোনে এসএসএস বিকল্পগুলি পাস করা


106

আমি git cloneসংগ্রহস্থল হোস্টের কীটি পরীক্ষা করে ssh ছাড়াই চালানোর চেষ্টা করছি । আমি এটি এসএসএস থেকে এটি করতে পারি:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host

গিট ক্লোন কমান্ডে একই ssh বিকল্পগুলি পাস করার কোনও উপায় আছে কি?

সম্পাদনা করুন: এমন একটি বিধিনিষেধ আছে যা আমি ~/.ssh/configmachine মেশিনে বা অন্য কোনও ফাইল সংশোধন করতে পারি না ।


4
আপনি যা করার চেষ্টা করছেন তা খুব ঝুঁকিপূর্ণ এবং সম্ভবত আপনার এটি করা উচিত নয়। দূরবর্তী এসএসএইচ সার্ভারের পরিচয় বেশিরভাগ পরিস্থিতিতে খারাপ ধারণা হলে যাচাইকরণটি অক্ষম করা। আপনি এসএসএইচ ব্যবহারের মাধ্যমে প্রাপ্ত সমস্ত সুরক্ষা কার্যকরভাবে অক্ষম করুন এবং মধ্য-আক্রমণের জন্য নিজেকে উন্মুক্ত করুন।
এফ

4
আসলে, আপনি প্রায়শই এটি করতে চান। আপনার একটি অভ্যন্তরীণ রেপো রয়েছে। যদি কেউ এটির ছলনা করতে সক্ষম হন তবে আপনি সমস্যায় পড়েছেন। এটি মোটেও "খুব ঝুঁকিপূর্ণ" নয়। বাস্তবে আপনি কতবার হোস্ট কী এর বাইরে থাকা ব্যান্ড চেক করেন? (আপনার কর্তব্য).
গ্রাহাম নিকোলস

উত্তর:


47

এগুলিকে আপনার যুক্ত করুন ~/.ssh/config:

Host host
    HostName host
    User user
    SshOption1 Value1
    SshOption2 Value2

Hostএন্ট্রি কি কমান্ড লাইন উল্লেখ করব, এবং HostNameসত্য হোস্ট-নেম। তারা একই হতে পারে, বা Hostএন্ট্রি একটি উপাধি হতে পারে। Userএন্ট্রি যদি আপনি এখানে কিছু উল্লেখ না ব্যবহার করা হয় user@কমান্ড লাইন।

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


4
আমি বলতে ভুলে গেছি যে আমি সেই মেশিনের কোনও ফাইল সংশোধন করতে পারি না। অন্যথায় হ্যাঁ, আপনার সমাধান কাজ করবে।
ড্যানিয়েল

28
GIT_SSHপরিবেশ পরিবর্তনশীল ব্যবহার করুন ।
জোশ লি

160

সম্প্রতি প্রকাশিত গিট 2.3 একটি নতুন ভেরিয়েবল "GIT_SSH_COMMAND" সমর্থন করে যা পরামিতিগুলির সাথে কমান্ড সংজ্ঞায়িত করতে ব্যবহার করা যেতে পারে।

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host

$GIT_SSH_COMMANDঅগ্রাধিকার নেয় $GIT_SSH, এবং শেল দ্বারা ব্যাখ্যা করা হয়, যা অতিরিক্ত যুক্তি অন্তর্ভুক্ত করতে দেয়।


এর আগে নতুন লাইন থাকা উচিত git cloneনাকি কোডটি সঠিক?
টোমা জ্যাটো - মনিকা

8
এটি সঠিক হওয়া উচিত, নতুন লাইন ব্যতীত নিম্নলিখিত কমান্ডের জন্য ভেরিয়েবল সেট করা উচিত। আপনি যদি একটি নতুন লাইন যুক্ত করেন তবে আপনার পরিবর্তনশীলটি রফতানি করতে হবে, তবে এটিও কাজ করা উচিত।
বরিস

আপনাকে ধন্যবাদ, আমি এই 2 দিন ধরে আটকে আছি!
জেমস জেনেটস

বুয়া! ধন্যবাদ.
জ্যাস্পার ব্লুজ

এটি আমার বিশ্বাস গিট 1.9 সংস্করণে কাজ করবে না, গিট 1.9 এর কোনও বিকল্প সমাধান আছে কি
লাজারাস

34

বিভিন্ন কীগুলি নির্দিষ্ট করতে অন্য বিকল্পটি হ'ল git config core.sshCommandগিট 2.10 + (Q3 2016)।

এই এনভায়রনমেন্ট ভেরিয়েবল বর্ণিত একটি বিকল্প বরিস এর উত্তর )

দেখুন 3c8ede3 কমিট (26 জুন 2016) দ্বারা গান Nguyễn গান Thái আরো Ngọc গান Duy ( pclouds)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে dc21164 কমিট , 19 জুলাই 2016)

core.sshCommandGIT_SSH_COMMAND এর জন্য প্রতি ভান্ডারটি কী মান ব্যবহার করবে তা নির্দিষ্ট করতে একটি নতুন কনফিগারেশন ভেরিয়েবল যুক্ত করা হয়েছে।

এর মতো $GIT_ASKPASSবা $GIT_PROXY_COMMAND, আমরা কনফিগারেশন ফাইল থেকে প্রথমে পড়ি আবার পড়ে যাই $GIT_SSH_COMMAND

এটি একই হোস্টকে লক্ষ্য করে আলাদা আলাদা ব্যক্তিগত কী বাছাইয়ের জন্য দরকারী (যেমন গিথুব)

core.sshCommand:

এই পরিবর্তনশীল সেট করা থাকে, তাহলে git fetchgit pushপরিবর্তে নিদিষ্ট কমান্ড ব্যবহার করা হবে sshযখন তারা একটি দূরবর্তী সিস্টেমে সংযোগ করতে হবে।
কমান্ডটি GIT_SSH_COMMANDপরিবেশের পরিবর্তনশীল হিসাবে একই আকারে থাকে এবং পরিবেশ ভেরিয়েবল সেট করা থাকলে ওভাররাইড হয়।

এর অর্থ হ'ল git clone:

cd /path/to/my/repo
git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' 
# later on
git clone host:repo.git

তোমার জন্য আবেদন করতে যে চান সব , Repos যেমন user1300959 যোগ মন্তব্য , আপনি একটি বিশ্বব্যাপী কনফিগারেশন ব্যবহার করেন।

git config --global core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

4
সম্ভবত আপনার কাছে এখনও কোনও রেপো নেই, যেহেতু আপনি করছেন git clone- এই ক্ষেত্রে আপনি বিশ্বব্যাপী গিট git config --global core.sshCommand ...
এসএস

@ ব্যবহারকারী 1300959 ভাল পয়েন্ট, আপনাকে ধন্যবাদ। আরও দৃশ্যমানতার জন্য আমি আপনার মন্তব্যে উত্তরে অন্তর্ভুক্ত করেছি।
ভনসি

এটি সেরা উত্তর।
মাইকচিন্কেল

শেষ অংশে আপনার কাছে অ্যাস্টোস্ট্রোফের অভাব রয়েছে
লুইজি লোপেজ

@ LuigiLopez আপনি উত্তর সম্পাদনা করতে পারেন? আমি আপনার সম্পাদনা পর্যালোচনা করব।
ভোনসি

22

GIT_SSH ভেরিয়েবল ব্যবহার করে কীভাবে ssh আর্গুমেন্টগুলি পাস করবেন তা এখানে জটিল উদাহরণ is

$ echo 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh
$ chmod +x ssh
$ GIT_TRACE=1 GIT_SSH="$PWD/ssh" git clone user@host

দ্রষ্টব্য: উপরে রেখাগুলি টার্মিনাল কমান্ড-লাইন যা আপনার টার্মিনালটিতে আটকানো উচিত। এটি একটি ফাইল ssh তৈরি করবে, এটি কার্যকর করে তোলে এবং কার্যকর করে দেয়।

আপনি যদি ব্যক্তিগত কী বিকল্পটি পাস করতে চান তবে দয়া করে চেক করুন কোনটি ব্যক্তিগত কী ব্যবহার করতে হবে তা গিটকে কীভাবে বলতে হবে?


সুন্দর! প্রশ্ন: উভয় $*এবং "$@"কাজ বলে মনে হচ্ছে। সাধারণত আমি ব্যবহার করি "$@", যেহেতু অন্যটি অবহেলিত বলে মনে হয়। $*এই ক্ষেত্রে পছন্দ করার কোনও কারণ আছে কি ?
mh8020

18

সিস্টেম স্তরের সেটিংসকে প্রভাবিত না করেই সংগ্রহস্থল স্তরের কনফিগারেশন

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

1. GIT_SSH_COMMANDপদ্ধতির গ্রহণ করে সংগ্রহস্থলটি ক্লোন করুন ।

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone ssh://url

2. একবার ক্লোন হয়ে গেলে, সংগ্রহস্থল ডিরেক্টরিতে নেভিগেট করুন।

cd repo-dir

৩.সেট core.sshCommandকনফিগারেশন যাতে ভবিষ্যতের সমস্ত কলগুলি কেবল স্বাভাবিকের মতো গিট কমান্ড দিয়ে চালানো যায় তবে অভ্যন্তরীণভাবে প্রদত্ত গিট বিকল্পগুলি গ্রাস করে।

git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

4
ভাল ব্যবহার core.sshCommand, আমি উপরে উল্লিখিত যে। উত্সাহিত।
ভনসি

6

আমি মনে করি যে কোনও সংস্করণ> = 2.3 এর আপডেট গিট এবং ব্যবহারটি GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@hostবাজি বিকল্প, তবে এটি যদি সম্ভব না হয় তবে @ জোশ-লি একটি ভাল বিকল্প দিয়েছে, তবে দয়া করে আপনার উত্তরটি এসএসএস কনফিগারেশনের ইনডেন্টিং আপডেট করুন।

Host host
    HostName host
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

0

উইন্ডো মেশিনে ফলো স্টেপ করে এই সমস্যাটি ঠিক করা হয়েছে: -

  • সি: \ ব্যবহারকারীদের \ ব্যবহারকারীর নাম.এসএইচ ফোল্ডারের অধীনে কনফিগারেশন ফাইল তৈরি করুন।

  • একটি কনফিগার ফাইলে নিম্নলিখিত লাইনটি যুক্ত করুন।

    host <HOST>
    hostname <HOSTNAME>
    user <USER_NAME>
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    port <PORT_NUMBER>
    KexAlgorithms +diffie-hellman-group1-sha1
    
  • তারপরে আবার চেষ্টা করুন।

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