SSHの使用

SSHの使用
─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = [email protected]
[core]
    editor = leafpad
    excludesfiles = /home/shirish/.gitignore
    gitproxy = \"ssh\" for gitorious.org
[merge]
    tool = meld
[push]
    default = simple
[color]
    ui = true
    status = auto
    branch = auto

今度は、ブラウザで資格情報を見つける必要がないように、git資格情報をgithub、gitlab、gitoriousに入れたいと思います。これをどのように自動化できますか?

zshを実行しています。

答え1

SSHの使用

git認証を処理する一般的な方法はSSHに委任することです。通常、リモートストレージ(例えば GitHubから)認証が必要なときはいつでも使用してください。もちろん、キーエージェントを使用したり、デスクトップ環境で処理したり、ssh-agent手動で使用して処理したりできますssh-add

ユーザー名を指定したくない場合は、SSHで構成することもできます。~/.ssh/configたとえば、次のようになります。

Host git.opendaylight.org
  User skitt

その後、次のように複製できます。

git clone ssh://git.opendaylight.org:29418/aaa

(ここにはユーザー名はありません。)

使用gitcredentials

SSH方式を適用できない場合(例えばHTTPS経由でアクセスされるリポジトリを使用している場合)gitには資格情報を処理する独自の方法があります。gitcredentials(そして一般的にgit-credential-store)。以下を使用してユーザー名を指定します。

git config credential.${remote}.username yourusername

資格情報ヘルパーで使用

git config credential.helper store

--globalこの設定をどこでも使用する場合は指定してください)。

その後、初めてリポジトリにアクセスすると、gitはパスワードを要求して保存します(デフォルトでは~/.git-credentials)。その後、リポジトリにアクセスすると、ユーザーに尋ねるのではなく、保存されたパスワードを使用します。

警告する:資格情報をホームディレクトリにプレーンテキストとして保存します。したがって、これが意味するものを理解し、リスクに快適でない限り、お勧めできません。

答え2

後で知っている人のために - 苦労しましたが、結局成功しました。

https/credentials.helper/Ubuntu

  1. グローバル設定解除:
    git config --global --unset credentials.helper
  2. ローカル設定解除:(各リポジトリで) git config --unset credential.helper
  3. 各リポジトリの資格情報ファイルを作成する:(各リポジトリ内)

    git config credential.helper 'store --file ~/.git_reponame_credentials'
    

これが最善の方法であるか、唯一の方法とは言えませんが、数時間イライラした後は効果がありました。

答え3

これらのSSHキーを含む他のアカウントがgithubにある可能性があります。このような場合:

  1. githubからログアウト
  2. 別のアカウントでログイン
  3. SSHキーの削除
  4. githubからログアウト
  5. 希望のユーザーとしてログイン
  6. 必須ユーザーにSSHキーを割り当てる
  7. "git push"などのgitコマンドをもう一度やり直してください。

関連情報