立命館大学の学内ネットワークを通して研究室のPCにssh接続する方法【Ubuntu 16.04】

学内ネットワークからPCにssh接続する


はじめに


どうもみなさんロックです.今回は研究室でのQOLをあげる方法について解説していきたいと思います.
最近コロナウィルスが流行っていることもあり研究室にいきたくないなと思っている人も多いのではないでしょうか.でも研究室のデスクトップで環境構築してるし行かないと研究できないという方も多いかと思います.
今回はそんなみなさまをお助けすべく自宅にいながら研究室のPCにssh接続する方法を解説していきたいと思います.
また,基本的にLinuxの中でもUbuntu 16.04環境で話を進めていきます.クライアントのOSは何でも大丈夫なはずです.私はMac,Ubuntuで研究室内のPCへの接続ができました.

サーバー側の設定

まずは研究室内のPCをサーバーとするために設定していきましょう.

IPアドレスを固定する

結論から言えばUbuntu 16.04では/etc/network/interfacesを編集すれば良いです.以下のように設定する感じですね.

# interfaces(5) file used by ifup(8) and ifdown(8)
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
address 192.168.0.45
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1

ただし,自分が接続しているLANの名前やゲートウェイ,DNSサーバーなどなどを調べる必要があるので一緒に設定していきましょう.

PC側のLAN名とネットマスクを設定する

ifconfigコマンドを実行してみましょう.おそらく次のような画面が出てくると思います.


eno1      Link encap:Ethernet  HWaddr 54:bf:64:9b:6f:bf  
          inet addr:192.168.0.29  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::56bf:64ff:fe9b:6fbf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9545701 errors:0 dropped:1546195 overruns:0 frame:0
          TX packets:4572793 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9227321751 (9.2 GB)  TX bytes:567548314 (567.5 MB)
          Interrupt:16 Memory:91180000-911a0000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:854747 errors:0 dropped:0 overruns:0 frame:0
          TX packets:854747 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1096263589 (1.0 GB)  TX bytes:1096263589 (1.0 GB)


ここでloというのはloopbackというものですので必要ですが実際に接続しているLANケーブルそのものではありません.
今回の場合ですとeno1というものが接続しているLANにあたりますのでこれを元に/etc/network/interfacesを編集していきます.ちなみにこのLANの名前は環境によって変わりますので自分のものと異なっていても気にしないでください.
また,ネットマスクは255.255.255.0ですね.[Mask]の部分がネットマスクとなります.ちなみに[inet addr]が現在のローカルIPとなります.
ここまでで以下のように編集できます.


# interfaces(5) file used by ifup(8) and ifdown(8)
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eno1 # 調べた名前
iface eno1 inet static
address 192.168.0.45 # 好きなIPアドレス
netmask 255.255.255.0 # 調べたネットマスク

ゲートウェイとDNSネームサーバーを設定する

ip route showコマンドを実行してみましょう.
以下のように表示されます.


default via 192.168.0.1 dev eno1 onlink 
169.254.0.0/16 dev eno1  scope link  metric 1000 
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 linkdown 
192.168.0.0/24 dev eno1  proto kernel  scope link  src 192.168.0.39


この[default via]の部分の次がゲートウェイのアドレスとなります.基本的にルーターのアドレスと同じのはずですね.
また,DNSネームサーバーに関しても基本的にゲートウェイと同じアドレスで大丈夫です.
また,この2つに関してはルーターの設定画面に行き,DHCPサーバー設定などをみても大丈夫です.ここに書いてあるゲートウェイ,プライマリDNSの部分が今回設定するゲートウェイとDNSネームサーバーに対応します.
最後に好きなエディタで/etc/network/interfacesを以下のように編集すれば大丈夫です.


# interfaces(5) file used by ifup(8) and ifdown(8)
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
address 192.168.0.45
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1

再起動とIP固定

/etc/network/interfacesを書き換えた後ネットワークを再起動すると反映されます.ただし,以下のコマンドを打ってやらないとダメかもしれません.


sudo ip addr flush dev eno1
sudo systemctl restart networking


もしdhcpから固定IPに変更した際は以下のコマンドを打ってから再起動しましょう.


sudo kill `cat /run/dhclient.eno1.pid`
sudo rm /run/dhclient.eno1.pid


この後sudo rebootで再起動しましょう.再起動後にifconfigを実行すると設定が変更されているはず.
参考サイト:[Ubuntu]ローカルIPアドレスを固定にする(18.04/16.04) https://jyn.jp/ubuntu-localip-static/


ルーターのポート開放

ポート開放は正直使用しているルーターの会社によって大幅に異なります.なので申し訳ないのですが私の研究室の環境で話をさせていただきます.一般的なルーターはバッファローが多いと思うんですがうちの研究室はNetGenesisとかいうMICRO RESEARCH製のルーターです.

ルーターの管理画面にログイン

ルーターのアドレスを入力して管理画面を開きユーザー名,パスワードを入力しましょう.
NetGenesisの場合以下のように入力するとログインできました.

アドレス:192.168.0.1
ユーザー:admin
パスワード:空白(何も入力しない)

ポート開放設定

管理画面から「メニュー>>WANポート設定>>IPマスカレードテーブル設定>>編集」でポート開放の設定を行う.
プロトコルを「TCP」か「TCP or UDP」に設定する.次に先頭ポート番号と終了ポート番号を同じ任意の番号に設定する.ポート番号は既に割り当てられているものなどもあるのでWikipediaなどをみて設定されていないものならなんでもいいです.最悪22でもいいんですがこれは一般的なsshのポートとみんなわかってるのでセキュリティ上変えておいた方がいいです.
最後にIPアドレスは先ほど設定した自身のローカルIPアドレスにしましょう.
最終的に以下のような設定に私の場合はなりました.


プロトコル:TCP or UDP
ポート:39739(ありがとうの気持ち)
IPアドレス:192.168.0.45


最後にこの設定を追加しルーターの更新>>再起動まで行いましょう.再起動の間はネットが使えないのでネット繋がらんのやけどと他の人に言われても素知らぬ顔でホンマですねとこたえましょう.

sshd設定の変更

サーバー側のPCでの設定に入っていきましょう.

sudo apt-get install openssh-server


先ずはsshのポート番号を変更しましょう.sudo権限を与えて好きなエディタで/etc/ssh/sshd_configを編集します.そして以下の「Port」の部分を先ほど設定したポー
ト番号に変更します.


# What ports, IPs and protocols we listen for
Port 39739


最後にsshdサービスをsudo /etc/init.d/ssh restartで再起動して変更内容を反映します.

firewall設定の変更

セキュリティ上のあーだこーだがあるので一応firewallの設定もしましょう.


sudo apt-get install ufw
sudo ufw enable
sudo ufw allow 39739

グローバルIPの確認

最後にサーバーのグローバルIPを調べる必要があります.一般的には以下のサイトなどを調べれば良いです.

https://www.cman.jp/network/support/go_access.cgi

ただし,立命館の場合はこのサイトの感じの場所で調べると立命館の大元のグローバルIPアドレスまで届いてしまうので研究室のグローバルIPをしっかり確認しましょう.基本的に教授とかルーターの設定をした人は知ってるはずです.
今回のグローバルIPは仮に133.19.39.39(感謝の気持ち)としておきましょう.

クライアント側の設定

次にssh接続する側のPCの設定をしていきましょう.

鍵の設定

秘密鍵を設定していない人は以下のコマンドで鍵を生成しましょう.


ssh-keygen -t rsa -b 4096


これで~/.sshディレクトリにid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が生成されているはずです.このid_rsaの方は絶対にどこにも教えないように!!

サーバーに公開鍵を追加

次に公開鍵をサーバー側のauthorized_keysに追加します.既にサーバーのPCにssh接続できるようになっているはずなので入れるかどうかの確認ついでにscpで送っちゃいましょう.usernameの部分は各自普段ログインしているユーザー名やsshアカウントを設定してくださいね.
また,ssh接続する際には学内ネットワークにつないだ状態で行いましょう.以下のコマンドで立命館の学内ネットワークに接続できます.


sudo apt-get install openconnect
sudo openconnect sslvpn.ritsumei.ac.jp


ユーザー名とパスワードはRAINBOWのものを使いましょう.また,他の大学の方も学内ネットワークへのVPN接続方法はHPに載ってるかと思いますので確認してください.
次にVPN接続した状態で別のターミナルを立ち上げてscpでid_rsa.pubを送りましょう.接続できた場合はusernameのパスワードを聞かれるので入力しましょう.このパスワード入力を省略するために鍵を設定する感じです.


scp ~/.ssh/id_rsa.pub username@133.19.39.39:/home/username/ -p 39739


id_rsa.pubを送る場所はどこでもいいですがサーバー側の~/.sshディレクトリに送っちゃうと上書きされてしまう可能性があるため自分はホームディレクトリに送って用が済んだら消すということをしています.というわけで今回はホームディレクトリに送りました.最後にこれをauthorized_keysに追加してデーモンを再起動すれば完成です.


cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
sudo systemctl restart ssh

さいごに

ここまでくれば後は好きにssh接続できるようになっているはずです.確認のために載せておくと手順としては以下の通りです.


sudo openconnect sslvpn.ritsumei.ac.jp # 学内ネットワークにつなげる
ssh username@global_ip -p port_number # 研究室のPCにssh接続


これで接続できるようになったはずです!それでは皆さんも良い研究ライフを!!

0 件のコメント :

コメントを投稿