学習目標:
Gitの知識を習得する
学習コンテンツ:
1.HTTPSとSSHの違い2.SSHキーと公開キーを完全に構成するための手順3.複数のgithubアカウントのSSH競合解決4.ファイアウォールによってブロックされたSSHポート勉強の時間:
2022.2.10学習出力:
1.HTTPSとSSHの違い
gitでプロジェクトのクローンを作成するには、HTTPSとSSHの2つの方法があります。両者の違いは次のとおりです。
HTTPS:誰でも、URLを複製できますが、プッシュするときにユーザー名とパスワードを確認する必要があります
。SSH:クローンプロジェクトの所有者または管理者である必要があり、前にSSHキーを追加する必要があります。クローン。
SSHプッシュの場合、ユーザー名を入力する必要はありません。SSHキーの設定時にパスワードが設定されている場合は、パスワードを入力する必要があります。それ以外の場合は、パスワードを直接入力する必要はありません。
gitでSSHキーを使用する手順:SSHキーがコンピューターに存在するかどうかを確認します。$ cd〜/ .ssh $ ls id_rsa.pubまたは
id_dsa.pubファイルがある場合は、ファイルが存在することを意味し、次の手順をスキップします。 SSHキーの作成。SSHキーを作成してパブリックSSHをリモートリポジトリに配置します
2.SSHキーと公開キーの手順を完全に構成します
このコラムの他の記事をご覧ください
3.複数のgithubアカウントのSSH競合解決
githubはSSHを使用してクライアントに接続します。シングルユーザー(最初)の場合、キーペアを生成した後、公開キーをgithubに保存すると
、SSHクライアントは接続するたびに検証のためにローカル秘密キー(デフォルトは〜/ .ssh / id_rsa)をサーバーに送信します。
シングルユーザーの場合、接続されたサーバーに保存されている公開鍵と送信された秘密鍵は自然にペアになります。
ただし、マルチユーザー(first、second)の場合、secondのアカウントに接続すると、
secondは自身の公開鍵を保存しますが、SSHクライアントはデフォルトの秘密鍵(firstの秘密鍵)を送信します。この検証は当然不可能です。 。パススルー。
ただし、複数のアカウントでSSHキーの切り替えを実現するには、クライアント側でいくつかの構成を行うことができます。
まず、〜/ .sshにcdし、ssh-keygen -t -rsa -C'[email protected]'を使用して新しいSSHキーid_rsa_secondを生成し、生成後に新しいSSH公開キーをgithubに追加します。
ssh-keygen -t -rsa -C '[email protected]'
デフォルトでは、SSHはid_rsaのみを読み取るため、SSHが新しい秘密鍵を認識するためには、SSHエージェントに追加する必要があります。
ssh-add ~/.ssh/id_rsa_second
コマンドでエラーが報告された場合:Could not open a connection to your authentication agent
.sshエージェントに接続できない場合は、コマンドssh-agent bash
を実行してからコマンドを実行してssh-add
ください。
上記の手順を完了した後、〜/ .sshディレクトリに構成ファイルを作成します。このファイルは、秘密鍵に対応するサーバーを構成するために使用されます。内容は以下の通りです。
Default github user(first@mail.com)
Host github.com
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa
#second user([email protected])
Host github-second
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa_second
構成が完了した後、デフォルト以外のアカウントでgithubリポジトリに接続する場合は、それに応じてリモートリポジトリのアドレスを変更する必要があります。たとえば、2番目のアカウントでリポジトリテストを追加する場合は、次のように追加する必要があります。これ:
git remote add test git@github-second:second/test.git
#并非原来的[email protected]:second/test.git
このように、各接続はid_rsa_secondを使用してサーバーに接続します。これまでのところ、これで完了です。
注:githubはgithubアカウントを取得し、構成ファイルのuser.emailに従って作成者情報を表示するため、複数のアカウントを持つユーザーの場合は、user.emailを対応する電子メール([email protected])に変更することを忘れないでください。
4.SSHポートがファイアウォールによってブロックされている問題を解決します
HTTPSポート403を使用するようにSSHを設定
するLANでは、SSHポート22がファイアウォールによってブロックされている可能性があります。HTTPSポート403を使用するようにSSHを設定できます。
HTTPSポートが使用可能かどうかをテストします
$ ssh -T -p 443 git@ssh.github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.
SSH構成ファイル〜/ .ssh/configを次のように編集します。
Host github.com
Hostname ssh.github.com
Port 443
構成が成功したかどうかをテストします
$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.
5.HTTPSまたはSSHを介してプライベートプロジェクトのクローンを作成します
現在、githubのプライベートプロジェクトはしばらくの間無料で利用できますが、通常のクローン方法を使用してローカルにダウンロードすると、クローンが失敗し、エラーメッセージが表示されます。
remote: Repository not found.
fatal: repository ‘https://github.com/github-username/github-template-name.git’ not found
通常、クローンのリンク形式は一般的に
https://github.com/github-username/github-template-name.git
次に、プライベートプロジェクトのセキュリティを確保するために、独自のプライベートプロジェクトをローカルで複製する場合は、確認用のアカウントとパスワードを追加する必要があります。
git clone https://github-username:github-password@github.com/github-username/github-template-name.git
クローンを作成するときは、https://の後にgithub-username:github-passwordを追加すると、@ projectリンクでプロジェクトを正常にクローンできます。これは、独自のプライベートプロジェクトをクローンする比較的簡単な方法です。
一部のグラフィカルGitソフトウェアでは、アカウントとパスワードの入力を求めるプロンプトが表示される場合があります。これはより便利です。たとえば
、プライベートウェアハウスのHTTPSリンクを入力し、[クローン]をクリックすると、入力ボックスが自動的にポップアップ表示され、アカウントのパスワードを入力できるようになります。これにより、よりユーザーフレンドリーになります。
ただし、ソフトウェアであるSourceTreeは、
HTTPSリンクを入力してクローンを作成することはできません。これはプライベートリポジトリ
であるため、解決策はSourceTreeのリモートアカウントにログインし
てプライベートリポジトリをプルすることです。
または、SSHリンクを使用して要件を満たすこともできます。SSHは秘密鍵と公開鍵を照合するため、アカウントとパスワードを入力する必要はありません