気合でなんとか

@Ningensei848が頑張った記録

学内LANへのVPN設定から学内サーバへのssh接続および深層学習初心者のための環境構築

 

前回までのあらすじ

ningensei848.hatenablog.com

 

なにするの

ubuntuをwindows10のPCに入れておいたらなんとサーバにssh接続して遊べる学べる環境を手に入れてしまったので、備忘録的に初心者の記録を残しておくよ~という話

 

追記

※某大学では学生ならだれでも使える全学計算機というものがありますが、 そこへ外部からssh接続する方法が既にまとめられてました。さすがはMAST編集部っすね……

  

 

 

まずは:VPNの設定

いざssh接続しようとしても、回線が限られている場合がほとんどです(セキュリティ上当然の措置ですね)学内実習用サーバへのアクセスも例外ではなく、学内LANでないとssh接続できないようになっています。もちろん365日大学に住んでいる人は例外ですが、そんな人は少数派だと思うので、ここではVPNを利用して学内LANに乗っていこうと思います。

学術情報メディアセンター VPN サービス

ググるとすぐに上記のページが出てくると思います。そこに書かれた導入方法に従って

SoftEther ダウンロード センターのページからSoftEther VPNというフリーソフトウェアをダウンロードしましょう。あの長谷川君子大先生も評価している登大遊さんが未踏で創り出したすごいものです。圧倒的感謝……ッ!

あとは学術情報メディアセンターの解説通りにやっていけば問題なく外部からVPNを通してssh接続する環境が整うことになります。 最高。

 

ssh接続ってなんだよ

兎にも角にもubuntuコマンドラインを起動してみます。

 

もしこれがwindowsコマンドプロンプトであれば、そのままsshとだけ入力しても

'ssh' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

 とか言われるだけです。

 

これは、windowsssh接続に必要なものが標準ではなにもそろっていないから起こります。           警告:0点・・・

しかし、ubuntuの場合はbashというUnixシェルかつコマンド言語(コマンドライン上で操作可能なプログラム)が標準で導入されています。これでwindowsのように頑張ってTTSSH(Tera Term SSH)を入れなくとも外部サーバにssh接続できます!やったぜ!!!!!!

 

それではubuntuコマンドライン上に「ssh」とだけ入力してみます。

以下のように表示されます。

user@<your_PC_name>:~$ ssh

usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec][-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]

なんかいろいろでてきて…ぜんぜんわからん……

※詳しいことはこの記事とか見るといいかも

つまり、引数としてなにか入れるとか、以下に述べる接続方式のどちらかを選択してくれないと繋げられないよ~~ということを言わんとしてるわけです。

ssh の後ろに必要事項をさらに追加しましょう。

接続方式には大きく分けて二つあります。


パスワード認証方式
パスワード認証方式はデフォルトの認証方式で、ユーザー名とパスワードでログインする方式。ユーザー名とパスワードは接続先OSのユーザーアカウントの情報が使用される。

公開鍵認証方式

全学計算機システムにSSH接続しよう! - MAST Webでは、公開鍵認証方式を扱ってる(?)っぽいのでそちらを参考に。

 

実習用サーバにssh接続する

実習用サーバへのアクセスはパスワード認証方式で行われます。しかし、そのためには、管理者からアカウントの発行、およびパスワードの通知をしてもらわないといけません。ここが難所になってくるかも……

以下の条件をクリアすると、三年次以下の卒研配属前の学生でも、大学が持っている実習用サーバへのアクセス権を得られるようなので是非挑戦してみてください。

  1. 手近な教員に「機械学習をやってみたいが資源が足りない」と相談する
  2. その方が親身な人であれば、サーバ管理者に話をつないでくれる
  3. サーバ管理者に「機械学習がやりたい」と伝え、何に詰まっているか相談する
  4. うまくいけばサーバへのアクセス権を入手できる

ぼくの場合、オゥプンらぼで先輩方や教員に相談し、king先生にメールを出せば解決するよといわれ、そこからサーバ管理グループのページというものが非公開に存在していることを知り、管理者にメールを出し、面談(仮)のあとにアカウントを発行してもらい、晴れて実習用サーバへのアクセス権を手に入れました。 やったぜ。

 

そういうわけで、どうにかしてssh接続ができたものとして深層学習のための環境構築をしていこうと思います。使う言語はpythonを想定しています。

環境構築

とりあえずまぁ、深層学習やるならpythonでしょ!ということで、pythonの仮想環境構築およびヴァージョン管理を担う「pyenv」を導入します。

ubuntuコマンドラインから以下を順に入力(☆部分は空白スペースの意味)

  1. git☆clone☆https://github.com/yyuu/pyenv.git☆~/.pyenv
    (これでpyenvのcloneができる;コマンドライン上に色々な文字が並ぶ)
  2. echo☆'export☆PYENV_ROOT="$HOME/.pyenv"'☆>>☆~/.bashrc
    (きちんと入力されていれば何も起こらない
  3. echo☆'export☆PATH="$PYENV_ROOT/bin:$PATH"'☆>>☆~/.bashrc
    (きちんと入力されていれば何も起こらない
  4. echo☆'eval☆"$(pyenv init -)"'☆>>☆~/.bashrc
    (きちんと入力されていれば何も起こらない
  5. source☆~/.bashrc
    (きちんと入力されていれば何も起こらない

※末尾の「~/.bashrc」については、OSによって異なるので注意。ubuntuだと上記の「~/.bashrc」だが、macOSだと「~/.bash_profile」になるようです。

※あと、5の操作もsourceじゃなくてexec $SHELLってやらないといけないのかも…

※こんなところ読んでないでググった方が早いです。

確認方法

上記の設定がきちんとできていれば、シェルがコマンド"pyenv"を認識してくれるようになるはず。ここでは、まだpythonをインストールしていないはずなので、pyenvに入れられるpythonコントリビューションの一覧を見てみることにします。

$ pyenv install --list

と入力します。すると、ずらーっと一覧が出てくるのが確認できるでしょう。pythonそのものだけではなく、anacondaminicondaなども含まれているのがわかります。

 

anacondaを導入しよう

何はともあれanacondaを入れとけばハズレがないというか、そんなことにこだわるステージではないので脳死でanacondaを入れます。

$ pyenv install -l | grep anaconda3

で表示される一番下にあるのが最新版のはずです。

$ pyenv install anaconda3-〇.〇.〇

で最新のものをインストールしましょう。

そうすることで、pythonそのものに関してもまとめてインストールできちゃいます。

 pythonのver.を確認したいときは、

$ python --version

で行うことができます。(同時にanacondaのver.も表示される)

 

つぎにやること

ともあれ、やりたいことをやっていく下地はできました。

大学で例えると、入学試験に受かって手続きも終えた~~ぐらいだと思います。

これからは、大学生活をよりよく過ごせるように必須なツールを再確認します。

condaとpipの更新

さまざまなライブラリを使っていくうえでそれをどうやって手に入れるかというのは大事です。簡単に手に入れられるようになる道具として、condaとpipは外せないと(いうかこれがないと何もできないというか)思います。

$ conda update -y conda
$ pip install --upgrade pip

で最新のものに更新します。successfully ~~ と出れば成功です。

 

 

 基本的な環境構築はこのあたりで終わりです、お疲れ様でした。

 

 

とりあえず

 

取り敢えずここまで出来ればあとはフレームワークを入れて足りないライブラリをインストールして、ガシガシ書いていくだけなので、今回はここまで。

VPNもつながったことでmanabaないし学内専用ページが簡単に接続できるようになったのは大きいですね…

 

次回

 

未定(なんか書き始めたら報告)