概要
社内からAWSの踏み台EC2インスタンスを経由しデプロイ先のEC2インスタンスに接続するような環境で開発を行っています。社内の開発マシン上のVisual Studio Code でデプロイ先のEC2インスタンスを直接触ることができたので、備忘録として残します。
環境
開発マシン(社内のプロキシ環境下):Windows10
踏み台EC2インスタンス:Linux
デプロイ先EC2インスタンス:Linux
手順
- 開発マシンにVisual Studio Code のインストール https://code.visualstudio.com/download
- Remote - Development(SSH) プラグインのインストール https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
- 開発マシンでユーザー環境変数の設定 HTTP_PROXY_USER 社内プロキシの認証ユーザー名 HTTP_PROXY_PASSWORD 社内プロキシの認証パスワード
- .ssh/configを開発マシンの任意の場所に作成
Host 踏み台EC2インスタンスの名前(任意) HostName インスタンスのIPアドレス User ec2-user Port 22 IdentityFile パス/pemキー(開発マシンのどこかに置いておく) # 社内プロキシを経由 ProxyCommand C:/Program Files/Git/mingw64/bin/connect.exe -H proxy.example.com:port %h %p Host デプロイ先EC2インスタンスの名前(任意) HostName インスタンスのIPアドレス User ec2-user Port 22 IdentityFile パス/pemキー(開発マシンのどこかに置いておく) ProxyCommand ssh -W %h:%p 踏み台インスタンスの名前
- VSCode から接続
作成した.ssh/configを選択して接続する。途中で、"Continue"のポップアップが出たら、Continueを選択して進める。

接続できた。
これでデプロイ先インスタンスのファイルを直接編集できるようになりました。
追記(2019/12/26)
上記設定では、ec2-userの権限があるファイルやディレクトリのみ操作が可能です。
なので、root権限が必要なファイルの編集、作成、移動等はできません。(ダウンロードは権限がなくても可能。)
デプロイ先EC2インスタンスにrootで接続するには、以下のようにします。(セキュリティ面で問題がある場合もあるので自己責任で。)
- ターミナルからデプロイ先EC2インスタンスにssh接続
- sudo su - でrootユーザーに切り替え
- authorized_keysのコピー
cp /home/ec2-user/.ssh/authorized_keys /root/.ssh/authorized_keys
#元のキーはバックアップしておく - service sshd reload でsshd再起動
- 開発マシンの.ssh/configを編集
Host デプロイ先EC2インスタンスの名前(任意)
HostName インスタンスのIPアドレス
User root ← ここ
これで、root権限が必要なファイルもVisual Studio Code上から操作可能になります。
参考
https://qiita.com/songxun/items/7f1e3ddcc87bb74e80f1
https://norm-nois.com/blog/archives/2958