リモートgitリポジトリを手元のローカルマシンにgit cloneする

リモートのサーバーやVPSやEC2インスタンス上のgitリポジトリをローカル開発環境のgitリポジトリにgit cloneで持ってくるという方法です。gitで使うLinuxユーザーを固定して決めておかないとハマるので気をつけてください。WEB上のgithubリポジトリに対する git clone ではなく、リモートのVPSやEC2などのサーバーのgitリポジトリに対するgit cloneの場合です。尚、EC2については、踏み台サーバなどは無し、セキュリティグループでsshの22番ポートのインバウンドは開いている状態とします。念のため、cloneされる側のVPSやEC2ではgit initしていて、gitリポジトリがあることも事前に確認しておいてください。

gitのリモートに対する接続プロトコルは、git , ssh , http/https の3種を使えますが、gitはread-onlyで開発に使いにくい、http/httpsは接続時に毎回パスワードを要求されてめんどくさいので、ssh によるgit接続を使うことがおすすめです。

.ssh/config や ssh-agent を利用します。

リモートVPSに対してgit cloneを手元の開発マシンローカルでたたく

ローカルにはgit initしたローカルリポジトリが存在しないまま、git remote add コマンドによるローカルリポジトリへのリモートリポジトリのフルパス登録も無しでclone出来ます。最初に手元の開発マシンで.ssh/configにリモートへの接続アカウントを保管し、ssh-agentへ接続に必要な鍵やパスフレーズを登録します。尚、Macであれば /Users/ユーザー名/.ssh/config という感じのファイルパスが一般的だと思います。管理アカウントや鍵が増えてくると、この管理方式もカオスになりますのでconfigファイルの分割なども検討をおすすめします。

.ssh/configへの記載を行う

以下の様な感じでVPSやEC2への接続アカウントを/.ssh/configのファイルに記載します。TCPKeepAlive、その他も設定したい方は適宜追加してください。Hostの接続名にはLinuxユーザー名、プロジェクト名などを含んでおいたほうがわかりやすいと思います。ForwardAgentは、ssh agent forwardingを行うための設定です。
尚、Hostと次の行のHostNameなどのインデント段差は無くても良いようです。誰かが見やすくするためにインデントをやり始めて、世界中に伝播したと思われます。

ssh-agentに鍵を登録する

ローカルのssh-agentに、VPSやEC2への接続アカウントのユーザー鍵とLinuxユーザー鍵パスフレーズの登録を行い、ssh接続試行中に鍵とパスフレーズを入力する手間を省きます。

上記2つの.ssh/configとssh-agentの設定によって 

による省略式なssh接続が出来る様になります。

ローカルでgit cloneをたたき、VPSリポジトリをクローンしてローカルにリポジトリを新設

ssh-agentであらかじめ登録した鍵のLinuxユーザーで、以下の様にssh経由でgit cloneをVPSやEC2に対してローカルで叩くことが出来ます。SSHのLinuxユーザー名が違っているとpermission deniedなどになり、ハマるので要注意。特に、gitまわりのpermissin deniedは、開発モチベーションを削ぐgit嫌いの悪因にもなりやすいと思っています。

githubからローカルにリポジトリをクローンするコマンドは簡単です。ググった際に記事も多いです。しかし、VPSやEC2のgitリポジトリをローカルにクローンする方法はググっても記事が少なく、わからない人がひそかに結構いると思っていますが、めっちゃ大事。開発環境や本番環境のお引越しで重宝します。

kusanagiユーザーだと以下の様な感じ

.ssh/configによる簡易sshコマンドでkusanagiだと以下のような感じ