AI & FinTech Post

AI(人工知能)とFinTechに関することについてまとめていきます。

Ubuntu16.04でプライベートIPアドレスだけでサーバ構築

説明

eo光のホームタイプで契約しており、自宅で機械学習用のサーバを建てたいなとなった思った。どこからでもノートパソコンで自宅のサーバにアクセスして計算を回せるといいなあ。ってことで調べてみたら、グローバルIPアドレスを追加で取得するには月額4000円もかかるみたいなので、いやだなあ。ってことでプライベートIPアドレスだけでサーバ公開できるようにしたいなということで以下に示すようにやっていった。

ルーターグローバルIPアドレスを持っている(101.27.214.433<-適当に作っています)。

OS: Ubuntu 16.04

参考サイト

http://support.eonet.jp/connect/net/multi_bbr/eo-rt100/ad/pa_server.htmlhttp://support.eonet.jp/connect/net/multi_bbr/eo-rt100/ad/pa_server.html

1. Pingの確認

ルータのグローバルIPアドレスでpingLAN内では通信できて、LAN外になると通信できない

ていうかポートマッピングを利用する場合は固定グローバルIPアドレスサービスへの申し込みが必要とのこと。ではただではできないのでポートマッピング機能を使ってサーバ公開は却下。

2. DMZホスト機能の発見

次にDMZホスト機能というものを用いれば固定アドレスサービスはなしで、サーバ公開できるみたい。 DMZホストとは、外部(インターネット)からアクセス可能となるホストを指定する機能のことを言います。

Step1 DMZホスト機能を有効化する

eo光ルーター設定でDMZ有効化ボタンがあったので有効化にチェックを入れた。

これを行うことでpingが通るようになった。(ping 101.27.214.433) 

3. telnet接続

telnet で接続を試みたが、ホストへ接続できませんでした。と出る。

ホスト側のファイアウォールを開放するのを忘れていた。23番ポートを開放するとtelnetが通るようになった。しかし、WAN側からの接続は失敗する。

 

わからないこと:DMZホスト機能を有効化したあと、LAN内からだとtelnetアクセスが可能なのだが(プライベートIPアドレスを指定することで)、WAN(インターネット)からだとtelnetアクセスの指定アドレスにプライベートアドレスを使用してもわからないよね。どうやって指定すればいいのだろう・・

グローバルIPアドレスへのpingは送れている。 

グローバルIPアドレスへのtelnetも行けた。。。あれ?昨日の夜にやったことはホストサーバ側のファイアウォールのポート23(terlnet)を開放した。これで良かったのだろう。でもどうして反映されるのに時間がかかったのだろう(半日くらい)。

windowsTeratermからtelnetで接続に成功。

念の為WindowsVagrantを入れた。

 

4. SSH接続

telnet接続に成功したら次はSSH接続でしょう。

 その理由は以下を参考にしてください。

qiita.com

 

sudo ufw status
sudo: ホスト farmhouse の名前解決ができません
状態: アクティブ

To Action From
-- ------ ----
2222 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
1194/udp ALLOW Anywhere
3000/tcp ALLOW Anywhere
23 ALLOW Anywhere
3000 ALLOW Anywhere
2150 ALLOW Anywhere
22 ALLOW Anywhere

1194/udp ALLOW OUT Anywhere

 

sshdのサービスを開始

パッケージの管理を行うためのaptitudeをインストール
$ sudo apt-get install aptitude OK

aptitudeを使ってsshを導入
$ sudo aptitude install ssh OK

/etc/ssh/sshd_configを編集し、PermitRootLoginの行を
PermitRootLogin no
に書き換える

$ sudo /etc/init.d/ssh restart
sshdのサービスを再起動させる(OK)

Windowsにgit bashをいれた。でもTeraTermSSH接続できるみたい。

SSH鍵の作成

 デスクトップに作成されたTera Termのショートカットアイコンをクリック(あるいはダブルクリック)して起動するとメインウインドウと「新しい接続」ダイアログが表示される(図3)。

 ただし、SSH接続で認証に鍵ファイルを利用する場合は事前に鍵を用意しておく必要がある。まだ鍵ファイルを持っていない場合は「新しい接続」ダイアログを閉じて、SSHの鍵ペア(秘密鍵、公開鍵)を作成していただきたい。「設定」メニューから「SSHキー生成」を選択すると図4のダイアログが表示されるので、「キーの種類」にある暗号方式(RSA1、RSA、DSAのいずれか)を選択する。RSA1はSSH1プロトコルで使われる暗号方式で、RSAおよびDSAはSSH2プロトコル用である。

mag.osdn.jp

作成した公開鍵は接続先のサーバに登録しておく必要がある。

そこでUSBでサーバに渡しました。ここでサーバ側の処理がいるけど後でやろう。。

 / % /etc/init.d/ssh start
[ ok ] Starting ssh (via systemctl): ssh.service.

 

サーバへの接続

 それではサーバに接続してみよう。まず、Tera Termの「ファイル」メニューから「新しい接続」を選択して「新しい接続」ダイアログを表示する(図5)。このダイアログでは「ホスト名」に接続先のホスト名もしくはIPアドレスを、サービスで「SSH」をチェックする。「SSHバージョン」は接続先のサーバおよび用意した鍵のタイプに合わせて指定していただきたい。以上を設定したら、「OK」をクリックする。

 

「Tera Term:エラー / 接続が拒否されました」のポップアップ(画像右)が表示されました。 

www.j-oosk.com

 

これを見ると問題点1のサーバ側でSSHサービスが未起動であることが問題であることがわかります。そりゃそうだ。公開鍵をサーバ上においただけでなんの設定もしていないんだから.

 

 

自宅サーバー(ubuntu server SSH)

telnet 22portでログインできない

nmapで調べてみた

nmap 192.168.0.40

Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-16 01:55 JST
Nmap scan report for 192.168.0.40
Host is up (0.00020s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
23/tcp open telnet
2222/tcp open EtherNetIP-1

 

23番と2222番しか開いていない。ってことは23番でSSH接続したらいけるのか?ー>いけた(teratermで次の画面に行けた)。そこでログインIDとパスワを売っても動作しない。

ssh_configをチェックしよう。そこでポートを23にして、sshのリスタートをやろう。

qiita.com

 

許可されたポート以外全ての閉鎖

$ sudo ufw default deny

を入れておいた。

ポートが間違っていました。
ssh -p 指定したポート番号 root@192.0.2.1
とすることでログインできました。皆さんありがとうございました。という情報があった。

telnetdとは
http://wa3.i-3-i.info/word13574.html

SSH接続

あとは別のクライアントPCから通常通りSSH接続するだけ
$ ssh user@ipアドレス

 

最後にtelnetdを停止して、ルーターとサーバのtelnet23番ポートを閉鎖する。