2021年12月22日水曜日

gitのsshプロトコル

これまでgitをlocalプロトコルgitプロトコルhttpプロトコルで 使用する方法について書きましたが、
最後にsshプロトコルについて書くことにします。
色んな意味でsshを使うのが標準でしょう。
ただsshだと匿名アクセスができないという問題がありますが。
なおすでに前回の作業を行いlocal/git/httpプロトコルでは
使用可能であることを前提とします。
またOSはUbuntu 18.04を想定しています。

sshプロトコルでgitを使うと言っても、
単にsshでトンネリングするだけです。
もし既にsshサーバがあってクライアントから
client$ ssh -p 2222 yamada@main.example.com
でアクセス可能で、サーバ側の"/opt/git/test/git"にリポジトリが存在しているなら、
client$ git clone ssh://yamada@main.example.com:2222/opt/git/test.git
でリポジトリを取得できます。
これをいじってpushすればOKです。
予め
eval "$(ssh-agent)"
ssh-add ~/.ssh/id_rsa
でパスフレーズを入力しておけば、
push等の実行時にいちいちパスフレーズを入力するのを省けます。
多人数で触るのなら、サーバ側に複数のアカウントを切って
それらが任意のグループに属するよう設定し、
サーバ側のリポジトリ本体の所有グループを
それにすることで特に問題なく使用できるはずです。

ただ公式サイトのリファレンスをみると
サーバ側に専用の"git"アカウントを作ってそこに多数のssh公開鍵を登録し、
多数のユーザがsshで"git"アカウントとしてログインできるようにし、
ただしログインしてもgit以外のコマンドが
実行できないようにする方法が書かれています。
そのサーバをgit以外で触らせたくなく、
多数のアカウントを切るのに不都合があるのなら
この方法がいいのでしょう。
実際githubはこのようにしていると推察できます。
ただ不正ログインされたときのログの確認なんかはやりにくいと思われ、
無理にそうする必要はないと考えています。
まあ運用に都合よくすればいいだけなのでそこは自由に。

0 件のコメント:

コメントを投稿