遠くのニュースかと思っていた 新型コロナウィルスが、世界中で蔓延してしまいました。
中国での報道を観ていると、凄まじい勢いで拡大していたので、日本でも広がるだろーなーと思っていたら、やはり蔓延してしまいました。
こうなると外出規制とかあって、仕事に行くこともままならない状態ですよ。
芸能人も死んじゃったりしてると、感染は、避けたいです。
しかしながら、仕事をしなければ生活がなりたたないですよね。
じゃー、テレワークだーとかって、急には無理だぜ 特に中小企業さんには、荷が重いし
会議とかは、フリーの ZoomやMicrosoft Terms、Line Businessとかでなんとかなるけど、会社のPCがなきゃ無理ってこともあるでしょう
そこで、自宅のPCから店舗や会社へなるべく無料でリモート接続する方法を紹介します。
ちゃんと、セキュリティも確保するんで、ご安心を
とりあえず、Windowsを想定していますが、Macでも同じことが出来ますよ
概略
簡単な仕組みを説明しますね。
店舗や会社のPCをリモートPCと呼びます。自宅のPCをローカルPCと呼びます。
ローカルPCからリモートデスクトップでリモートPCへ接続します。
この方式ですと、既存のインフラに変更を加えないので、今回のようにその場しのぎな状況には、うってつけのやり方と思います。
TCP接続1本でなんとか出来るとはいうものの、本来のVPNのような効率の良い通信が出来るものではありません。
しっかりとしたテレワーク環境を整えるまでの、時間稼ぎに使いましょう。
リモートPCは、店舗や会社のネットワークに接続されていれば、自身のPCでなくても結構です。
前提として、リモートPCとローカルPCは、インターネットへ接続出来ることとします。
必要な物は、VMware Workstation Player 、AWS(Amazon Web Services)、Vyos、teratermかputty です。
VMware Workstation Playerは、無料で試用可能です。
AWSは、一年間無料で試用可能です。
Vyosは、rollingreleaseを無料使用可能です。
1. 仮想VYOS構築
VyosというソフトウェアルーターをローカルPCに構築します。
今回は、実マシンに構築せずに仮想マシンとして構築します。
ですから、VMware PlayerをローカルPCにセットアップして下さい。
VyosのイメージISOをダウンロードします。
VMware Playerにて、仮想マシンをVyosのイメージISOを使って新規作成します。
仮想マシン設定は、以下です。
メモリ 500MB
プロセッサ 1 以上
ハードディスク 5GB
CD/DVD : VyosイメージISO
ネットワークアダプタ ブリッジ(自動)
ディスプレイ 自動検出
ということで作成した仮想マシンを起動すると、ログインプロンプトが表示されます。
初期ユーザーとパスワードは、 共に vyosです。
User: vyos
Pass: vyos
ログイン出来ると、不愛想なプロンプトが表示されます。
vyosの操作の基本を説明しておきます。
動作設定を行うには、configureコマンドを入力します。
すると、プロンプトが以下のように変化します。
この状態でしか動作設定コマンドを受け付けないので、気を付けてください。
動作設定を反映するには、commitコマンドを入力します。
動作設定を保存するには、saveコマンドを入力します。
動作設定から抜ける時は、exitを入力します。
上記、3コマンドをセットで忘れないようにして下さい。
ISOイメージから起動しただけですので、仮想マシンにvyosをインストールします。
install image を入力して下さい。
すると、色々と聞いてくるので適当に答えていきます。
Partition(Auto/Parted/Skip) [Auto]
Install the image on? [sda]
Continue? (Yes/No)[No] <- ここは、Yesと答えて下さい。
How big of ...
What would you ...
Which one ...
Enter password for user 'vyos' : [パスワード] <- ここは、パスワードを入力して下さい。 後で、外部からのパスワードログインを停止するので、ユーザー名と同じ vyosでも良いです。
Which drive GRUB ...
全て完了すると、また、不愛想なプロンプトに戻るので、一旦、シャットダウンします。
poweroffコマンドを入力します。 次に y を入力します。
仮想マシンが停止すると、VMware Playerも終了するので、もう一度、起動して下さい。
一応、VyosイメージISOは、必要無くなったので、切り離しておいて下さい。 まー、別にセットされていても害は無いですけど。
再び、 VMware Playerで、Vyosを起動します。
またまた、ログインプロンプトが表示されるので、先ほど入力した、ユーザー(vyos)、パスワードを入力します。
では、いよいよ本格的な設定を行います。
リモートPCのネットワーク環境に合わせてVyosも設定します。
動作設定モードに入ります。
configure
ほとんどの方は、DHCPによる自動IP取得だと思うので、以下でよろしいかと思います。
set interfaces ethernet eth0 address dhcp
もし、うちは、硬派に固定IPなんだよって方は、以下のように設定して下さい。
set interfaces ethernet eth0 address [任意のIPアドレス]/[マスクビット数]
set protocols static route 0.0.0.0/0 next-hop [ゲートウェイアドレス]
set system name-server [DNSアドレス]
次に、リモート接続出来るようにsshサーバを起動します。
set service ssh port 22
次に、ssh鍵を作成します。
ssh-keygen -t rsa
コマンドを入力すると、以下のように聞かれるので適当に答えます。
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vyos/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
全部、リターンで良いです。
これで、大変重要な鍵を作成しました。
これが外部に漏れるとノーガード状態になってしまうので、慎重に扱って下さい。
作成した鍵ファイルは、最後に接続する時に使用する大切なファイルなので、仮想マシンから取り出して保存して置きます。
これが、なかなか面倒臭いのですが、teratermというソフトやwinscpなんかで、コピーする必要があります。
vyosのIPアドレスは、
show interface を入力すると表示されます。
鍵のありかは、 /home/vyos/.ssh/id_rsa です。 <- この鍵ファイルは、秘密鍵と呼びます。
コピーが完了してから、次にssh鍵を設定して、外部からのパスワードログインを停止します。
loadkey vyos ~/.ssh/id_rsa.pub
set service ssh disable-password-authentication
これで、vyosは、完了です。
全ての動作設定を反映、保存します。
commit
save
終了します。
exit
2.AWSで中継サーバー構築
有名なAWSで、ssh中継サーバーを構築します。
別にAWSでなくても良いのですが、無料枠があるので良いかなと思いました。
この中継サーバー構築の目的は、ファイヤウォール内にいるリモートPCとローカルPCを接続させる為に構築します。
どちらの環境のルーターも設定変更しなくて良いことが最大のメリットです。
とりあえず、AWSのアカウントを作成し、ログインして下さい。
ここの記事を読んでいる方は、日本に住んでいる方を前提としているのですが、もしかして違う方は、右上の場所を選択するメニューがあるので、これを変更して下さい。
サービスメニューからEC2を選択して下さい。
すると、EC2 ダッシュボードといものが表示されます。
左のメニューからインスタンスをクリックすると、インスタンス作成画面が表示されます。
青いインスタンスの作成ボタンがあるので、押してあげましょう。
ここら辺りの説明は、この記事が古くなると変わってしまうでしょう。必要なスペックを記載するので、他のサイトとか参考にして構築して下さい。
OS:Ubuntu Server 20.04 LTS
タイプ:t2.nano あるいは、t2.micro
メモリ:500MB程度
ストレージ: SSD 8GB 程度 もっと少なくっても大丈夫でしょう
インスタンスを作成する直前に、キーペアをどうするか聞いてきます。
新しいキーペアを作成してダウンロードして下さい。 この鍵を使って、AWSインスタンスに接続します。
この鍵を AWS鍵 とします。
インスタンス作成後、起動して下さい。
起動完了すると、説明画面に必要な情報が表示されるので、記録しておいて下さい。
パブリック DNS (IPv4) <- これが一番重要です。
これを AWSのドメイン名 とします。
次に、外部ポートを開けたいので
ネットワーク & セキュリティ の セキュリティグループ をクリックして下さい。
右下の項目にインバウンドルールとあるので、これをクリックします。
すると、インバウンドのルールの編集ボタンが表示されるので、これをクリックします。
ポート: 8080 を開けたいので、画像のように設定し、ルールの保存をクリックします。
起動している AWSインスタンスに接続します。
sshで接続するので、teratermで良いかと思います。
接続先は、AWSのドメイン名 です。
ユーザーは、ubuntu
鍵は、ダウンロードしておいた AWS鍵 を指定して下さい。
接続出来ると、やはり、不愛想なプロンプトが表示されます。
AWSインスタンスは、あまりすることが無いのですが、sshサーバの設定変更をする必要があります。
sudo -s で、ルートになります。
echo GatewayPorts clientspecified >> /etc/ssh/sshd_config
これで、設定完了ですので、反映しましょう。
systemctl restart ssh
以上で、AWSインスタンスの設定は、完了です。
3.AWS接続構築
VyosとAWSインスタンスが構築出来たので、VyosからAWSインタスンスへの接続環境を構築します。
Vyosでの作業になるので、Vyosを起動して下さい。 起動していたら、そのままで良いです。
AWSインタスンスの鍵を配置します。
ここまで、これた方は、手慣れたものでしょう。
SCPで、AWS鍵 をVyosへコピーします。
場所は、/home/vyos/.ssh/ です。
次に、teraterm等で接続して下さい。
コピーした鍵の属性を変更します。
chmod go-rw /home/vyos/.ssh/AWS鍵
次に、ssh接続情報ファイルを作成します。
/home/vyos/.ssh/config を以下の内容で作成します。
Host AWSのドメイン名
HostName AWSのドメイン名
port 22
IdentityFile /home/vyos/.ssh/AWS鍵
User ubuntu
RemoteForward 0.0.0.0:8022 localhost:22
ServerAliveInterval 120
ServerAliveCountMax 3
TCPKeepAlive yes
接続してみましょう。
ssh AWSのドメイン名
Are you sure you want to continue connecting (yes/no)? yes
不愛想なプロンプトが表示されればOKです。
特に用事が無いので終了です。
exit
次に常駐接続してみます。
ssh -f -N AWSのドメイン名
おそらく、問題無く接続出来たはずです。
バックグラウンドで接続したので、わからないと思います。
netstat -a | grep ssh で確認出来るかと思います。
これで、AWSインスタンスの8022ポートが、vyosに接続される状態になっています。
vyosを再起動したりした後は、常駐接続を行えば復旧します。
4.リモートデスクトップ接続
リモートPCで、リモートデスクトップ設定をしておいて下さい。
適当にGoogle検索すれば、やり方がヒットするでしょう。
いよいよ、ローカルPCよりリモートPCへ接続してみましょう。
puttyが一番良い感じなんですが、teratermでもOKです。
ローカルPCにて、AWSのドメイン名 へssh接続します。
ちょっと、気を付けていただきたいことがあります。ポート番号を8022にして下さい。
22に接続すると、AWSインスタンス、そのものに接続してしまいます。
接続すると、ユーザーと鍵を指定する必要があります。
ユーザーは、vyos
鍵は、1で大切に保管されている 秘密鍵 を指定します。
teratermの場合、Setup -> SSH Forwarding.. を開きます。
すると、ポート転送設定画面が表示されるので、リモートPCのIPアドレスを入力します。
画像の場合、リモートPCのIPを 192.168.0.55 としていますが、このアドレスは、事前に調べておく必要があります。
Windows10の場合、「ネットワークのプロパティ」を表示すれば IPv4 アドレスとして、表示されます。
ここが重要なのですが、Forward local port 13389としていますが、これは、ローカルPCの13389番をリモートPCに接続する番号ですと設定しています。
なので、リモートデスクトップ接続する時に、localhost:13389と指定することで、192.168.0.55のリモートPCに接続することになります。
ちょっと、ややこしいですかね。
とにかく、13389番を色々と変えれば、別のリモートPCにも接続出来るんだよってことを理解しておいて下さい。
マックの場合、マック用のリモートデスクトップがあるようなので、同じような感じで接続出来ます。
しかし、Teratermが無いので、代替えソフトか、気合のsshコマンドで行う必要があります。
Wineでなんとかするっていうのもありですね。
5.注意点とか
めでたく、リモートデスクトップに接続出来ることは、おわかりいただけたと思いますが、気を付けてほしい点があります。
仮想マシンのVyosやリモートPCですが、これを起動しているパソコンがスリープや省電力モードにならないように設定して下さい。
後、Windows Updateなんかで、再起動されるとか、どうしようもないですよ。
たまに、ファイヤウォールにて外ポートへ抜けるのを80と443に限定している環境があるかと思います。
そんな時は、AWSの /etc/ssh/sshd_config に、Port 443 と追加すれば、443もsshとして開いてくれます。
さらに、インバウンドルールで、443ポートを追加します。
Vyosの /home/vyos/.ssh/config の port 22 を port 443 に変更すれば、Okです。
あまりないですが、VyosとAWSインスタンスの接続が切れてしまうことがあります。
これを検知して、再接続する必要があります。
/home/vyos/keepssh.sh を以下の内容で作成します。
#!/bin/sh
HIT=`ps -x | grep "ssh\ -f\ -N\ AWSのドメイン名" | wc -l`
if [ $HIT -le 0 ]; then
ssh -f -N AWSのドメイン名
fi
次に /home/vyos/crontab.txt を以下の内容で作成します。
0 * * * * /home/vyos/keepssh.sh
作成したcron定義を有効化します。
crontab crontab.txt
さらに、keepssh.shに実行権限を与えます。
chmod a+x keepssh.sh
これで、毎時0分に接続チェックを行い、切断されていれば、再接続を行います。
応用編として、vyos の webproxyやOpenVPNを使うことで、リモートネットワーク上のさまざまな機器に接続することも可能です。
しかしながら、やりすぎるとセキュリティ上、問題になるので、お気を付けくださいませ