1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VSCodeでリモートサーバーのDockerコンテナに踏み台を経由して接続する方法

Last updated at Posted at 2022-08-30

この記事なに

どうでもいいところではまったので忘れないために・・・

事前に準備が必要なもの

リモートサーバー(サーバー名:remote)
dockerのインストールとコンテナの立ち上げ
sshdサーバー
踏み台サーバー(サーバー名:humihumi)
sshdサーバー
ローカルマシン
VSCode
必要ライブラリ:Remote-SSH, Remote-Containers, Docker

sshの接続

VSCodeでRemote-SSHを絶対にインストールすること

ローカルマシンでの作業

.sshのフォルダを自分のユーザーディレクトリに作ってください。
.sshのファルダのパーミッションは、chmod 700 .sshで変更してください。
.sshにディレクトリを変更してから鍵を2つ作ります。
ssh-keygen -t rsa -f kagi1
ssh-keygen -t rsa -f kagi2
「kagi1」・「kagi1.pub」・「kagi2」・「kagi1.pub」の4つのファイルができます。
「kagi1」と「kagi2」は、
chmod 600 kagi1
chmod 600 kagi2
でパーミッションの変更をしてください。

.sshのフォルダ内にconfigファイルを作り、以下の内容を記述してください。

Host remote
  HostName        (ipアドレスかホスト名)
  IdentityFile    C:\Users\hage\.ssh\kagi1
  User            hage
  LocalForward    localhost:23750 /var/run/docker.sock
  ProxyCommand    ssh -CW %h:%p humihumi

Host humihumi
  HostName        (ipアドレスかホスト名)
  IdentityFile    C:\Users\hage\.ssh\kagi2
  User            tare
  LocalForward    23750 localhost:23750
  Port            12345

踏み台サーバーでの作業

kagi1.pubを何かしらの方法で踏み台サーバーにもってきてください。
ユーザーのディレクトリに移動してから、

mkdir .ssh
chmod 700 .ssh
cd .ssh
# kagi1.pubを.sshに持ってくる。
cat kagi1.pub >> authorized_keys
chmod 600 ~/.ssh/authorized_keys

sshdの設定のためにsshd_configの内容を変更してください。
エディタはnanoになっていますが、すきなものつかってください。

sudo nano /etc/ssh/sshd_config
#PasswordAuthentication yes
↓
PasswordAuthentication no

#PermitRootLogin prohibit-password
↓
#PermitRootLogin no

#Port 22
↓
Port 12345

リモートサーバー

先ほどと同じくkagi2.pubを何かしらの方法で踏み台サーバーにもってきてください。
ユーザーのディレクトリに移動してから、

mkdir .ssh
chmod 700 .ssh
cd .ssh
# kagi2.pubを.sshに持ってくる。
cat kagi2.pub >> authorized_keys
chmod 600 ~/.ssh/authorized_keys
sudo nano /etc/ssh/sshd_config
#PasswordAuthentication yes
↓
PasswordAuthentication no

#PermitRootLogin prohibit-password
↓
#PermitRootLogin no

dockerの準備

を参考にしてます。

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

ログインユーザーにdockerの権限を当てる。
ここをしてないとパーミッションエラーで繋がらない(1敗)

sudo gpasswd -a $(whoami) docker
sudo chgrp docker /var/run/docker.sock

ここまでできたら何かしらのコンテナを作って稼働させておいてください。

VSCodeからの接続(ローカルマシン)

sshの接続設定ファイルを読み込みます。
以下の順で押していくとconfigファイルの指定画面まで行けるので、最初に作った.sshディレクトリを指定してください。
ssh.jpg
設定すると接続先の指定ができるようになるのでので、リモートサーバーを選択してください。
すると別窓VSCodeが起動してリモートサーバーまで接続してくれます。
別窓で、Ctrl+,を押すと設定画面に行けるので、
リモートタブを選択してから「docker host」で検索するとDocker:Hostの設定が出てきます。
ここを「localhost:23750」と設定してください。
vscodessh.jpg
別窓VSCode状で再度リモートエクスプローラーのアイコンをクリックし、
SSH ターゲットと書かれた部分の横の∨マークを押すと「Containers」を選択できるようになっている(はず)
なので選択するとリモートマシンのDockerコンテナにはいれるようになってるはずです。
(書き忘れがなければ・・・)

おわり

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?