この記事なに
どうでもいいところではまったので忘れないために・・・
事前に準備が必要なもの
- リモートサーバー(サーバー名: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ディレクトリを指定してください。
設定すると接続先の指定ができるようになるのでので、リモートサーバーを選択してください。
すると別窓VSCodeが起動してリモートサーバーまで接続してくれます。
別窓で、Ctrl+,を押すと設定画面に行けるので、
リモートタブを選択してから「docker host」で検索するとDocker:Hostの設定が出てきます。
ここを「localhost:23750」と設定してください。
別窓VSCode状で再度リモートエクスプローラーのアイコンをクリックし、
SSH ターゲットと書かれた部分の横の∨マークを押すと「Containers」を選択できるようになっている(はず)
なので選択するとリモートマシンのDockerコンテナにはいれるようになってるはずです。
(書き忘れがなければ・・・)
おわり