メインコンテンツに移動

SSH-GIT

SSHだの公開鍵だのといわれてもわからない,って人は,まずこっちが先です.

Can not open display

SSHで接続してgitすると,パスワードを入力するときにエラーが出る場合があります.その対策は・・・

  1. SSH接続するときに, -X オプションをつけて XQuartz を有効にしておく. あるいは
  2. unset SSH_ASKPASSしてからgit

パスワードなしでGIT

git clone の後ろが HTTPS: になっている場合,gitサーバーにアクセスするたびに,パスワードの入力が必要になり,面倒です.GITサーバーによっては,SSH鍵を登録できます.

  • cat ~/.ssh/id_rsa.pub コマンドを行って,エラーする場合には,ここに書いてあるように, ssh-keygen を行ってください.MacでもLinuxでも作業方法は同一です.
  • まあいずれにせよ, 上記コマンドで表示されるハナモゲラ文字列が「SSH公開鍵(パブ鍵,鍵穴)」というものです:
          ssh-rsa AAAAB3NzaC1yc2EAAAAB・・・ありえない長さ・・・・IwAAAQEAs・・・kuins.net
  • サーバーでSSH鍵を登録します.BITBUCHETでは,下記の画面で行います(【アカウント管理】【SSHキー】)

      注意!! bitbucket では, 各レポジトリの【設定】にも【SSHキー】がありますが,これは使用目的が違います.

パスワードなしGITの利用

  • GITサーバーに鍵を追加すると,プロジェクトのアクセスサイトとして,HTTPS 以外に,SSH が選択できるようになります.
    アドレスをコピーしておいてくださいな.
  • プロジェクトの .git/config ファイルを見てみましょう.もしもあなたが最初に git clone https://.... でプロジェクトに参加した場合,こんな感じになっています:
    [core]
    	repositoryformatversion = 0
    	filemode = true
    	bare = false
    	logallrefupdates = true
    [remote "origin"]
    	fetch = +refs/heads/*:refs/remotes/origin/*
    	url = https://sugimoto605@bitbucket.org/rgdkyotou/mix3.git
    [branch "newStack"]
    	remote = origin
    	merge = refs/heads/newStack
    

    あなたが git clone git....  で参加した場合,ここの作業は不要です(最初からSSH用に設定されているはず).

  • デフォルトでは,GITサーバーに"origin"という名前が付いています.アクセス方法はHTTPSになってますよね.そこで,SSHサーバーを追加しましょう. さっきコピーしたアドレスを使って記述します:
    [remote "ssh"]
    	fetch = +refs/heads/*:refs/remotes/origin/*
    	url = git@bitbucket.org:rgdkyotou/mix3.git
    
  • 注意! ソフトによっては,remote "origin" 以外の設定を無視する輩がいます.その場合には,もう普段使う方の名前を "origin" にするしかないですね.
  • これで,アクセスできるようになりました.例えば,プッシュコマンドは次のようになります:
    $ git push ssh
    パスワードをいちいち入力しなくても,アップできるはずです.