はじめに
あるプロジェクトで他社の開発者もEC2インスタンス内で作業する必要が出てきた。
その際、pemファイルを渡さない方法で他社の開発者がSSH接続できる環境を作りたく色々調べた際のメモ。
割とこういう場面ってあるんじゃないかと思う。
目次
- EC2内にユーザーを追加
- ローカルマシンで鍵の作成
- サーバーに公開鍵を設置と設定
- ローカルから鍵を元にアクセス
1. EC2内にユーザーを追加する
まずは、他社用のユーザーを追加し、設定する。
例では
hogeuser
が他社のアカウントになるので、その部分を適宜変更して進めてみてください
// EC2内でルート権限になる
$ sudo -i
// ユーザー追加
$ useradd hogeuser
// パスワードを設定
$ passwd hogeuser
$ vi /etc/sudoers
vimでsudoers
を開きhogeuser
に関する記述を追記
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
# 以下を追記
hogeuser ALL=(ALL) ALL
編集終わったら、escを押し、:wpを入力してエンター
2. ローカルマシンで鍵の作成
他社の開発者が以下で作成した鍵を元にアクセスをしてもらうために、新規で鍵を作成する。
以下はサーバーではなく自分のPC内で行う
// .sshフォルダがなければ作成
$ mkdir ~/.ssh
// .sshフォルダに入る
$ cd ~/.ssh
// 鍵の作成
$ ssh-keygen -t rsa -f id_rsa_hogeuser
以上で、.ssh
フォルダ内にid_rsa_hogeuser
とid_rsa_hogeuser.pub
というファイルが生成される。前者が秘密鍵で、後者が公開鍵。
// scpコマンドで公開鍵をアップロード
$ scp -i 〇〇.pem ~/.ssh/id_rsa_hogeuser.pub ec2-user@EC2インスタンスのパブリックIP:/home
3. サーバーに公開鍵を設置と設定
// ec2内に入りルートユーザーになる
$ sudo -i
// ユーザーのディレクトリを作成
$ cd /home
$ mkdir hogeuser
// hogeuserディレクトリに入る
$ cd hogeuser
// .sshディレクトリを作成
$ mkdir .ssh
// 公開鍵をコピーしてリネーム
$ mv /home/id_rsa_hogeuser.pub /home/hogeuser/.ssh/authorized_keys
// ユーザーとグループを変更
$ chown -R hogeuser:hogeuser ./.
// 権限変更
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
4. ローカルから鍵を元にアクセス
// 秘密鍵を元にアクセス
$ ssh hogeuser@EC2インスタンスのパブリックIP ~/.ssh/id_rsa_hogeuser
上記入力後に作成したパスワードでアクセスが可能。
rootユーザーになりたい場合も同じパスワードでなれる。