主にssh,git関連のメモ。環境はec2のamazon linux。

refs
gitにsshで接続(ポートと秘密鍵を指定)
sshのポート番号を変更
AWS EC2インスタンスにssh接続するまで その1
ユーザの追加と削除。adduser/deluser
Linuxでssh接続。公開鍵認証やパスワード認証とか
sshdのログファイル確認

まず、configに書かないで、sshを使ってgit cloneする場合。hoge.gitはリモートのbareリポジトリ。ローカル環境にlocalhoge.gitでcloneする。
$ git clone ssh://ec2-user@***.***.***.***:22/home/ec2-user/hoge.git localhoge.git
22番ポートなら省略可能。もしかしたら、事前にssh-add で秘密鍵をssh agentに登録する必要があるかも。

ssh接続したとき(失敗も成功も)、ログアウトした時、su,sudoコマンドをしたとき、sshでgit clone,git pushでリモートと通信したときのログは/var/log/secureに出力される。接続元のIP、指定ユーザ名、接続の成否などが記録される重要なログ。ただ、gitで通信した場合、IPは出力されるけど、gitのログ、誰か?操作は何か?は出力されない。おそらくgitの独自のログを見る必要がありそう。それがどこにあるかはまだ調べてない、不明。あと、secureログの解析、統計ツールみたいな物が何かあるはず。

・sshのポート番号を変更する
/etc/ssh/sshd_configファイルのPort 22を変更し、再起動する。service sshd restart

55555に変更。ポート番号を指定する
$ git clone ssh://ec2-user@***.***.***.***:55555/home/ec2-user/hoge.git localhoge.git
ssh接続の場合
$ ssh -i ~/.ssh/hoge_key.pem ec2-user@***.***.***.*** -p 55555
configファイルに書くのなら、Port属性も追加する。

・新規ユーザを作成し、ssh接続、git通信ができるようにする
前提としてec2-userと同じ公開鍵を使う

まずはrootになってadduserコマンドで新規ユーザssh-userを追加。
$ adduser ssh-user
パスワード設定
$ passwd ssh-user
$HOMEの下に.sshディレクトリ作成

$ mkdir .ssh
ec2-userの公開鍵認証の情報ファイルauthorized_keysをコピー。このファイルには、複数の公開鍵が記載されているので、許可しない鍵などがあれば削除したりする事。
$ cp /home/ec2-user/.ssh/authorized_keys /home/ssh-user/.ssh/
認証ファイルのオーナーを自分に変更
$ chown ssh-user:ssh-user /home/ssh-user.ssh/authorized_keys
.sshディレクトリを700,認証ファイルを600へ権限変更
$ chmod 700 .ssh/
$ chmod 600 authorized_keys
これでssh-userでssh接続ができるようになる。

また、設定にもよるが、新規ユーザはsudo権限は与えられていない。sudoを実行できるようにするには、root権限になり、/etc/sudoersファイルに下を追加する必要がある。
ssh-user ALL=(ALL) ALL

*あと、sshの公開鍵認証ではなく、パスワード認証にしたい場合は、sshd_confを編集する。このあたりの情報はぐぐればいくらでも出てくる。パスワード認証だと、鍵を指定しないでsshできる。ただ、セキュリティ的にやめたほうがいい。
$ ssh ec2-user@***.***.***.***

・rootのsshログインを禁止する
新規ユーザのみ公開鍵認証、rootでは禁止したい場合、/etc/ssh/sshd_confを下のように編集し、再起動する
- #PermitRootLogin yes
+ PermitRootLogin no
refs:rootでsshログインを禁止する方法
/root/.ssh/authorized_keysファイルを削除しても同様にrootログインできなくなるけど、環境によってはマシンを再起動するとauthorized_keysファイルが復元されているので注意。

・新規ユーザssh-userでもgitでssh接続する
ec2-userのgitリポジトリを丸ごとコピー
# cp -ar /home/ec2-user/hoge.git /home/ssh-user/
所有者、所有グループを変更。-Rでサブディレクトリ内も全て。
# chown -R ssh-user:ssh-user /home/ssh-user/hoge.git
これでクライアントから新規ユーザssh-userでもgit ssh接続ができるようになる。おそらく、
remote.origin.urlの変更が必要になるはず。git-serverはconfigのHost設定
remote.origin.url=ssh://ssh-user@git-server/home/ssh-user/hoge.git

・ec2-userでssh接続をできないようにするには、/home/ec2-user/.ssh/authorized_keysから該当する公開鍵を削除すればいい。ファイル毎削除してもいいが、他の公開鍵の設定している場合は注意する