やりたいこと
SSH接続したリモートサーバーのファイルを、ローカルマシンのAtomで編集したい。
ただしリモートサーバーには踏み台越しじゃないとアクセスできない。
環境 & 構成図
構成図は以下の通り。
要するにリモートサーバーにはクライアントから直接アクセスできない環境(踏み台を経由する必要あり)。
繰り返しになるが、この環境で、ローカルマシンのAtomを使ってリモートサーバーのファイルを編集するのが今回の目的。
- 環境
- リモートサーバー:Amazon Linux 2
- 踏み台サーバー:Amazon Linux 2
- ローカルマシン:Windows 10
使うもの
-
Atom
- ローカルマシンのエディタ
- 拡張機能である"remote-sync"を使用
- "remote-sync"のインストールについてはこちらを参照
-
Tera Term
- ローカルマシンのSSHクライアント
- 踏み台サーバーに接続し、"remote-sync"のトラフィックをリモートサーバーへ転送するために使用
やりかた
ざっくりこれだけ。
- ローカルマシンから踏み台サーバーにSSH接続
- SSHクライアントでSSH転送設定
- remote-syncの接続先にlocalhostを設定
手順
ローカルマシンから踏み台サーバーにSSH接続
Tera Termで踏み台サーバーにSSH接続。
手順を知りたい方はこちら。
SSHクライアントでSSH転送設定
Tera Termでは次のように設定すればOK。
「設定」→「SSH転送」→「ポート転送」→「追加」で、以下の通り設定する。
- ローカルのポート:なんでもよいが、ウェルノウンポートは避けるのが無難。今回は10022とした。
- リモート側ホスト:リモートサーバーのプライベートIPアドレス。
- リッスン:空欄でOK。
- ポート:リモートサーバーの待機ポート。
これで、localhostの10022番ポートへの通信が、踏み台サーバーを経由してリモートサーバーへ転送されるようになる。
remote-syncの接続先にlocalhostを設定
ここからはAtomの操作
リモートサーバーに転送したいファイルを含むディレクトリを右クリックし、「Remote Sync」→「Configure」を開く。
「Configure」で以下の通り設定する。
- Hostname:localhost
- Port:10022(SSH転送で指定したローカルのポート)
- Target Directory:/home/ec2-user(ファイルを保存したいリモートサーバー上のディレクトリ)
- Ignore Paths:指定なし(ローカルのディレクトリ内で、リモートサーバーに転送しないファイルのパス)
- Username:ec2-user(リモートサーバーへのログインに使用するユーザー名)
- Keyfile Path:リモートサーバーへのSSH認証に使用する秘密鍵のパス
- uploadOnSave:チェックを入れると、ファイル保存と同時にリモートサーバーへアップロードする。
動作確認
適当なファイルを作成し、ローカルで保存する。
すると以下の通り、ファイルをアップロードしたよーというメッセージが表示される。
一応、踏み台からリモートサーバーにSSH接続して確認。
ちゃんとファイルがアップロードされていることが確認できた。
まとめ
ということで、踏み台経由でリモートサーバー上のファイルをAtomで編集できるように。
これでファイルのプライマリはGithubリポジトリに置いて、編集するときはローカルのAtomという構図がとりやすくなった。