এসএসএইচ-এর সাথে গিট সংযোগ পরীক্ষা করার জন্য ভারবস পদ্ধতি?


109

জিআইটি ব্যবহার করার সময়, এসএসএইচ-এর মাধ্যমে জিআইটি ব্যবহার করতে আমার সমস্যা হয় এবং যেহেতু এটি কাজ থেকে এবং বাড়িতে আলাদা মডেম উভয়ই ঠিক কাজ করে, সম্ভবত এটি আমার হোম মডেমটি অভিনয় করে। HTTP- র সাথে সংযোগ স্থাপনে আমার কোনও সমস্যা নেই।

সুতরাং, আমি ধরে নিচ্ছি যে এটি একটি এসএসএইচ সমস্যা, তবে আমি সরাসরি এটি ব্যবহারে বিশেষজ্ঞ নই। আমি কি এমন কোনও কমান্ড চালাতে পারি যা একটি "পরীক্ষা" সংযোগ স্থাপন করে এবং ঠিক কখন এবং কোথায় সমস্যাটি দেখা দেয় তা আমাকে জানতে দেয়?

প্রায় কাছাকাছি সব "বৃহত্তর" (যেমন কমান্ড fetch, cloneঅথবা pushঅনেক তথ্য দিয়ে) থেকে git(এমনকি যখন দিয়ে চালানো -v) শুধু "Hang" কেন তারা বন্ধ করে হিসেবে কোন ইঙ্গিত সঙ্গে দূরবর্তী অবস্থান থেকে সংযোগ মাঝখানে, তাই তারা কোন ব্যবহার হয় ।

এসএসএইচ সংযোগে কী ঘটছে সে সম্পর্কে আমি আরও বিশদ পেতে কি কোনও উপায় আছে?

উত্তর:


113

পরিবেশ সূচক

গিট সংস্করণ ২.৩.০ থেকে আপনি পরিবেশ পরিবর্তনশীলটি ব্যবহার করতে পারেন GIT_SSH_COMMANDএবং -vভার্বোজ যুক্তিটি এভাবে পাস করতে পারেন :

GIT_SSH_COMMAND="ssh -v" git clone example

অতিরিক্ত ভার্বোস হতে, এটি তৈরি করুন -vvv:

GIT_SSH_COMMAND="ssh -vvv" git clone example

গিট কনফিগারেশন

গিট সংস্করণ ২.১০.০ থেকে, যা উবুন্টু ১.0.০৪ এর রেপোতে থাকবে, আপনি বিশ্বব্যাপী এই কনফিগারেশনটি সংরক্ষণ করতে পারেন, বা প্রতি উদাহরণ হিসাবে যেমন রেপো:

git config core.sshCommand "ssh -vvv"
git pull

আমার পক্ষে কমপক্ষে, আমি যদি এটি করি: GIT_SSH_COMMAND="ssh -v" git clone exampleআমি এসএসএইচ সংস্করণটি ডিবাগ করতে পারি, এটি Cloning intoবার্তার পরে মুদ্রিত হয় তবে এতে ব্যর্থ হয় git clone। আমি মুছে ফেলার পরে GIT_SSH_COMMANDএটি কাজ করে। শেষ পর্যন্ত, উদ্দেশ্য পরিবেশন করা।
পাওলো অলিভিরা

5
এক সময়ের জন্য এটি আরও ভাল হবে:git -c core.sshCommand="ssh -vvv" pull
জোসেফ কে স্ট্রস

git config --global core.sshCommand "ssh -vvv" git clone example
আজোডিয়াম

81

আমারও একই সমস্যা ছিল। ডিবাগিংয়ের জন্য আমি আমার ssh_config এ একটি লাইন যুক্ত করেছি। এটি আমি এখানে কীভাবে করেছি:

git remote -v

সেখানে আপনি এর মতো একটি লাইন পাবেন:

origin  git@github.com:me/test.git (fetch)
origin  git@github.com:me/test.git (push)

এই ক্ষেত্রে হোস্ট হয় github.com। এখন আপনি ssh কনফিগারেশনে একটি হোস্ট-এন্ট্রি যুক্ত করতে পারেন:

vim ~/.ssh/config

এবং যোগ করুন:

Host github.com
    LogLevel DEBUG3

গিট অপারেশন ব্যবহার করার সময়, আপনার এখন প্রচুর ডিবাগ বার্তা পাওয়া উচিত। কম ডিবাগ বার্তা পেতে, ব্যবহার করার চেষ্টা করুনDEBUG1

জন্য এলেবেলে সংস্করণ> = 2.3.0 দেখুন @Flimm থেকে উত্তর একটি দক্ষ সমাধান জন্য।


14

পড়ার পরে man git, আপনি সেট করতে পারেন এমন কিছু দরকারী পরিবেশগত পরিবর্তনশীল GIT_TRACE_PACKETএবং GIT_TRACE। উদাহরণ স্বরূপ:

GIT_TRACE_PACKET=true git clone ssh://[...]

গেমটি থেকে কিছুটা দেরি হলেও আশা করি এটি কাউকে সহায়তা করে!


1
এটি সহায়ক, তবে আপনি এসএসএইচ এর সাথে সংযোগ সমস্যা সম্পর্কে কোনও বার্তা পাবেন না। তবে যদি এসএসএইচ সংযোগটি কাজ করে তবে এটি আরও ডিবাগ করার উপায়।
ট্রেন্ডফিশার

5

প্রতি man ssh:

 -v      Verbose mode.  Causes ssh to print debugging messages about its progress.  This
         is helpful in debugging connection, authentication, and configuration problems.
         Multiple -v options increase the verbosity.  The maximum is 3.

সুতরাং, চেষ্টা করুন ssh -v। যদি এটি আপনাকে কী জানা দরকার তা না জানায়, আপনি vআরও বেশি ডিবাগিং তথ্যের জন্য এক বা দুটি যোগ করতে পারেন । বিশেষ করে গিথুবের জন্য চেষ্টা করুন ssh -vvvT git@github.com

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


উত্তরের জন্য ধন্যবাদ, তবে আমার সম্ভবত প্রশ্নটি অন্যভাবে জিজ্ঞাসা করা উচিত ছিল (যেহেতু গিটহাব সরাসরি এসএসএইচ সংযোগের অনুমতি দেয় না)। আমি পোস্ট এবং শিরোনাম সম্পাদনা করেছি, তবে এটিকে বাতিল করে দেওয়া এবং পরিবর্তে একটি নতুন প্রশ্ন তৈরি করা ভাল?
আইকিউ আন্দ্রেয়াস

@ আইকিউআন্ড্রেয়াস, গিটিহাব এসএসএইচ সংযোগগুলিকে এই অর্থে অনুমোদন দেয় যে প্রমাণীকরণের পর্বটি সঞ্চালিত হবে এবং যদি এসএসএইচ পদক্ষেপে সমস্যাটি সত্যই ঘটে থাকে তবে আপনি এটি সেভাবে দেখবেন। যদি আপনি সন্ধান করছেন যে আপনি এমনকি এটি এখনও পেতে পারেন না, এমন কিছু চলছে যা সংযোগ তৈরি হতে এমনকি আটকাচ্ছে।
tigs

1
আমার ঠিকঠাক প্রমাণিত হচ্ছে, এবং কখনও কখনও push/ pullকোনও সমস্যা ছাড়াই রেপোতে। তবে প্রায়শই এটি কমান্ডের মাঝখানে কেবল "স্তব্ধ" থাকে এবং অবিরত হয় না (বিশেষত যখন আমি প্রচুর পরিমাণে ডেটা স্থানান্তর করি যেমন বড় cloneবা push) or কোনও ত্রুটির বার্তা নেই, এটি কেবল সেখানে বসে এবং চালিয়ে যায় না।
আইকিউআন্দ্রিয়াস

3

আমি গিট (1) কে ssh (1) এর জন্য ব্যবহার করার জন্য বহিরাগত কমান্ডটি বলার উপায় দেখছি না, তবে একটি কর্মক্ষেত্র হিসাবে কেবল / পাথ / টু / এসএসএস /path/to/ssh.orig এর নাম পরিবর্তন করে একটি শেল তৈরি করুন স্ক্রিপ্টের মোড়ক / পথ / থেকে / এসএসএস, এবং -v পতাকাগুলিতে যুক্ত করুন:

$ sudo mv /usr/bin/ssh /usr/bin/ssh.orig
$ sudo vim /usr/bin/ssh
$ cat /usr/bin/ssh
#!/bin/sh

if [ -x /usr/bin/ssh.orig ]; then
    exec /usr/bin/ssh.orig -v -v -v "${@}"
fi

$ sudo chmod a+x /usr/bin/ssh

Ssh পরিবহনে গিট কমান্ডগুলি কার্যকর করতে গিয়ে আমি ভারবস আউটপুট পাই। একবার ডিবাগিং হয়ে গেলে, স্ক্রিপ্টটি মুছুন এবং / पथ / টু / এসএসএসে /path/to/ssh.orig পুনরুদ্ধার করুন।


4
ফাইলগুলি সরানোর পরিবর্তে, /usr/binমোড়ক স্ক্রিপ্টটি ভিতরে রাখার বিষয়টি বিবেচনা করুন /usr/local/bin
মুরু

2
কমপক্ষে আমার অদ্ভুত উইন্ডোজ ইনস্টল-এ, পরিবেশ পরিবর্তনশীলটি GIT_SSHআপনি গিট ব্যবহার করতে চান এমন বাইনারিটির দিকে নির্দেশ করতে পারেন।
কোডার

যেমনটি বলা হয়েছে, আপনি অবশ্যই আসল এসএস ফাইলটি সংশোধন করতে চান না, তবে আমার / usr / স্থানীয় / ওয়ার্কআরউন্ড সম্পর্কে সংরক্ষণ থাকবে। এটি স্বচ্ছ নয়, এবং এটি সহজেই স্টম্পড হয়। আরও ভাল: আপনার কার্যনির্বাহী স্ক্রিপ্টটি $ হোম / বিনে রাখুন এবং আপনার ব্যবহারকারীর $ প্যাথ ভেরিয়েবলের মধ্যে নতুন পাথটি যুক্ত করুন, অন্য পাঠাথ বিভাগের আগে। এবং এটি করার আগে, আমি যাচাই করবো যদি এমন কোন ENV ভারসাম্য সমাধান না হয় যা আরও ভাল (এই উত্তরটি পুরানো)।
স্কট প্রাইভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.