python virtualenv
pythonにはvirtualenv
という仮想環境が簡単に作れるモジュールがある。お試しに何かモジュールをインストールしたい場合、virutalenv
で環境を作ってそちらにインストールして試せば、システム環境は無傷で使える。いくつも環境が作れるのでpythonのバージョンで分けたりと色々と便利なのだ。
気に入らなければその環境を消すか使わなければいいだけ。
virtualenv
とそれを簡単に管理できるvirtualenvwrapper
をセットで導入するのが便利なのでそちらをメモ。
- ubuntu14.04
- Mac OSX Yosemite(10.10.3)
install and setup
ubuntu
# pipがなければインストール $ sudo apt-get install python-pip # pythonを使うなら依存関係でエラーが出るかもしれないのでこちらもインストール $ sudo apt-get install python2.7-dev # virtualenv / virtualenvwrapperのインストール $ sudo pip install virtualenv $ sudo pip install virtualenvwrapper
mac
Macはpip
は最初から使えるはず。
# virtualenv / virtualenvwrapperのインストール $ sudo pip install virtualenv $ sudo pip install virtualenvwrapper
setup
virtualenvwrapper
を使うには以下のスクリプトをbashrc
に追加する必要がある。
$ vim ~/.basrh # macは`~/.bash_profile` source /usr/local/bin/virtualenvwrapper.sh export WORKON_HOME=~/.virtualenvs
使ってみる
作成
オプションは色々とあるが、システムのまっさらな状態で使ってみたいので、基本的に自分は--nosite-package
のみつける。
# mkvirtualenv <option> <環境名> $ mkvirtualenv --no-site-package hoge # --never-download : ネットワークからDLをしない # --system-site-packages : インストール済みモジュールを使用する # --no-site-packages : インストール済みモジュールを全て外した状態で仮想環境が作成される # 作成されるとコマンドプロンプトに一番左に環境名が追加される (hoge)$
作成した環境ディレクトリを確認
- 環境ディレクトリに移動
(hoge)$ cdvirtualenv # ディレクトリを調べてみる (hoge)$ pwd /home/hoge/.virtualenvs/hoge # 中身はこんな感じ (hoge)$ ls bin include lib local
モジュールをインストールしてみる
git
でバックアップをとって他のモジュールをインストールしてみる
# 環境全体をローカルgitにコミットしておく (hoge)$ git init; git add -A; git commit -a -m "init" # 何かと便利な`Twisted`モジュールをインストールしてみる (hoge)$ pip install twisted
git
で差分を見てみると、いろいろ新しく追加されている。
On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # bin/cftp # bin/ckeygen # bin/conch # bin/lore # bin/mailmail # bin/manhole # bin/pyhtmlizer # bin/tap2deb # bin/tap2rpm # bin/tapconvert # bin/tkconch # bin/trial # bin/twistd # lib/python2.7/site-packages/Twisted-15.1.0-py2.7.egg-info/ # lib/python2.7/site-packages/twisted/ # lib/python2.7/site-packages/zope.interface-4.1.2-py2.7-nspkg.pth # lib/python2.7/site-packages/zope.interface-4.1.2-py2.7.egg-info/ # lib/python2.7/site-packages/zope/ # pip-selfcheck.json #
- 早速インストールしたモジュールを使ってみる
# importできる (hoge)$ python -c "import twisted"
- 環境を離れて使ってみる
# 環境の停止 (hoge)$ deactivate # 元のシステムで使ってみるとエラーが出る $ python -c "import twisted" Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named twisted
これにより、システム環境にはインストールされていないことがわかる。
よく使うコマンド一覧
deactivate
: 環境の停止
# 環境の停止 (hoge)$ deactivate $
workon
: 環境に移行する
すでに環境があるならばworkon
コマンドでその環境に移行することができる
$ workon hoge (hoge) $
lssitepackages
: インストールしたパッケージ一覧
(hoge)$ lssitepackages Twisted-15.1.0-py2.7.egg-info pip-6.1.1.dist-info zope _markerlib pkg_resources zope.interface-4.1.2-py2.7-nspkg.pth easy_install.py setuptools zope.interface-4.1.2-py2.7.egg-info easy_install.pyc setuptools-15.0.dist-info pip twisted
rmvirtualenv
: 環境を消す
フォルダをまるごと消しても事は済むのだが、もちろん環境を削除するコマンドもある。
$ rmvirtualenv hoge
おしまい
これ使っていていいのは、色々と試しても環境ごと削除すれば綺麗さっぱりできる。ドジな自分にはもってこいな環境なのである (;^_^
launch MCServer on Raspberry Pi 2
MCServerはC++で書かれた軽量なMinecraftサーバだ。 C++で書かれているためJavaのVanillaサーバよりも軽快な動作が期待できる。
vanillaサーバー構築については前の記事にあります。 caad1229.hatenablog.com
マルチプラットフォーム対応で、Raspberry Pi用のバイナリも用意されている。 しかも設定すればサーバーと同時にウェブサーバも立ち上がり、ブラウザから管理できるのも魅力的だ。それに、確かにvanillaサーバーよりも起動が早いし、CPU使用率は低く、ラグなども起こらなかった。 が、少しばかり違和感があった。
- 敵の動作、またダメージを与えた時の挙動がちょっと変。具体的には、ダメージを与えると結構吹っ飛ぶ。その吹っ飛び方もちょっとゆっくりで、なんていうのか月にいる感じ?
- 1.7と1.8にマルチで対応しているらしく、特にバージョンで分かれていることはないようだ。だからなのか不明だが、1.8対応のブロックをおいてもそのブロックにはならなかった。
そんなんだけども動かした時のことをメモ。
Download
サイトからDLできるし、Githubからソースごと取得もできる。ここではwget
でダウンロード。
$ mkdir -p ./work/minecraft; cd ./work/minecraft $ wget http://builds.cuberite.org/job/MCServer%20Linux%20armhf/lastSuccessfulBuild/artifact/MCServer/MCServer.tar $ tar -xvf MCServer.tar
起動
一発目の起動でワールド生成や、コンフィファイルが生成される。特にいじる必要がない、もしくは最初からコンフィグファイルなどが用意出来ているのであればそのまま運用してもいい。
$ cd ./MCServer $ ./MCServer # stopはvanilla同様`stop`で終わらせる
Web Serverの設定
起動すると、デフォルトでもウェブサーバーも立ち上がっている。しかしユーザの追加などしていないためログインできないため追加する必要がある。
- userの追加
$ vim ./webadmin.ini # defaultポートは8080 [WebAdmin] Ports=8080 Enabled=1 # ユーザを追加するには以下のようにする # [User:<user name>] # Password=<pass> [User:admin] Password=admin
- Serverの再起動
$ ./MCServer
- web serverにアクセスして
WebAdmin Log in
をクリック。
- パスワードを求められるので
webadmin.ini
編集時に追加したユーザ名とパスワードを入力
- ログインできた
色々と設定できる。こちらで管理できるのですごく便利だと思う。加えて、コマンドなどvanillaサーバーとは違うのでwikiを参照する必要がある。
おしまい
メモしておいてなんだが、こちらは現在使っていない。が、そんなに大した作業でもないので試してみてはいかがだろうか。webから管理もできるし、こういったことが簡単にできるのはやっぱり作った人たちに感謝したい。現在も開発が続いているようだし今後に期待である。1.7でやったらいいかもしれないし。。
AndroidコマンドでGradleプロジェクトを作る
最近好きなのはGradle
。AndroidツールはGradleをサポートしている。
サクッとプロジェクトを作ってテストアプリとか作れるのはいい。
IntelliJ IDEAやAndroid Studioから作ったほうが楽だと思う。 でもコマンドからでも作れるのをメモしておきたい。それにGradleを理解するのに役に立った。実験的な要素も含んだメモ。
ちなみに自分はIntelliJを使っているのだが、それでプロジェクト作るとマルチプロジェクトになるからIDEから作るのはちょっと好きではないのだ。
- ubuntu 14.04
Gradleの導入
Wrapperがあるが、Gradleを使うなら自身のPCにインストールしておいて損はない。
GVMのインストール
様々な方法があるが、自分の場合はバージョン管理も楽だしGVMから。 サイトにあるインストールスクリプトをコピペで終わり。超簡単。
$ curl -s get.gvmtool.net | bash
Gradleのインストール
GradleインストールするならGroovyもインストールしておこうじゃないか。 GroovyってのはjavaライクなGradleで使われている言語。
$ gvm install groovy # groovyをインストール $ gvm install gradle # gradleをインストール
Project作成
Android SDKのパスが通っているものとする。 で、Androidツールコマンドを使ってGradleのAndroidプロジェクトを作成する。
$ android create project -gradle -v 1.1.3 # gradleを使用する (バージョン番号指定する) --target 7 # ターゲット番号(`$ android list target`で確認) --name hoge # project name --path hoge # プロジェクトディレクトリ名 -- package com.caad1229.hoge # パッケージ名 --activity MainActivity # アクティビティ名 # Gitでローカルブランチにコミットしておく。後半にちょっと確認したい部分があるので。 $ cd ./hoge $ git init; git add -A; git commit -a -m "init";
Gradle Android Pluginのバージョン指定はここから。2015年4月現在、ベータを抜かした最新バージョンは1.1.3
。
現在も頻繁にバージョンが変わっている模様。
wrapperでビルド
で、せっかく生成してWrapperによりGradleもはいっているのでgradlew
でビルドしたところエラー orz
$ cd ./hoge $ ./gradlew build FAILURE: Build failed with an exception. * Where: Build file '/home/hoge/temp/hoge/build.gradle' line: 9 * What went wrong: A problem occurred evaluating root project 'hoge'. > Could not create plugin of type 'AppPlugin'. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 1.703 secs
WrapperされたGradleのバージョンを確認してみると、1.12
のようだ。古い。
$ cat ./gradle/wrapper/gradle-wrapper.properties #Wed Apr 10 15:27:10 PDT 2013 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
自分のGradleでビルド
Wrapperを使わずに自分のGradleでビルドする。がこれも失敗する。
$ gradle build FAILURE: Build failed with an exception. * Where: Build file '/home/sasaki/temp/hoge/build.gradle' line: 17 * What went wrong: A problem occurred evaluating root project 'hoge'. > Could not find method runProguard() for arguments [false] on BuildType_Decorated{name=release, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesEnabled=false, renderscriptDebuggable=false, renderscriptOptimLevel=3, applicationIdSuffix=null, versionNameSuffix=null, minifyEnabled=false, zipAlignEnabled=true, signingConfig=null, embedMicroApp=true, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}}. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 2.536 secs
理由はrunProguard
の名前が1.0.0
以降変わっているのだ(参考)。
なので以下のように修正する。
$ vim ./build.gradle - runProguard true + minifyEnabled true
で、再度挑戦すると成功した。
$ gradle build : # 省略 check :build BUILD SUCCESSFUL Total time: 3.928 secs
自分のGradleでWrapperしなおす
もし、このプロジェクトを他の人に渡す場合、他の人にもGraleインストールしてくださいという必要がある。が、そんなことしたらGradleのいいところを半分以上捨てているようなもの。環境が変わってもプロジェクト単位で開発環境を保持できるwrapper
があるのがGraldeのすごい魅力的なところだと思う。
Gralde Wrapper
早速wrapperをやってみる。
$ gradle wrapper :wrapper BUILD SUCCESSFUL Total time: 2.826 secs
Wrapperでビルド
今度はgradlew
スクリプトでビルド実行すると成功する。
$ gradle build : # 省略 check :build BUILD SUCCESSFUL Total time: 3.928 secs
なにがどうなったのか
git
で最初のソースをコミットしているので差分を確認してみる。
$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: build.gradle modified: gradle/wrapper/gradle-wrapper.jar modified: gradle/wrapper/gradle-wrapper.properties Untracked files: (use "git add <file>..." to include in what will be committed) .gradle/ build/ no changes added to commit (use "git add" and/or "git commit -a")
注目したいのはwrapper
の中身が変わっていること。diff
で確認。
$ git diff gradle/wrapper/gradle-wrapper.properties : # 省略 -distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.3-bin.zip
gradleのバージョンが変わっている。これで他の人が他の環境でgradlew
を実行したら自分と同じ2.3
を使ってビルドしてくれるはず。
すごい初歩的なことだけど、こういったこと確認して納得できると楽しい。
udevでデバイス名を固定する
カーネルで認識するデバイスファイル名は、デバイスの抜き差しを行った時に変わってしまう場合がある。 そういった場合、デバイスファイルに直接読み書きを行うプログラムを作るとデバイスファイル名が定まらないために面倒なことになる。
こっちとしては特定の機器が接続された時、特定のデバイスファイルとしてアクセスしたいのである。
udev
の恩恵にすがると動的にデバイスファイルを作成してくれる。その作成されたデバイスファイルはカーネルが認識したデバイスファイルのリンクである。
今回は手元にあったソニーのNFCカードリーダを使ってデバイス名を固定にしてみたのをメモ。
- ubuntu14.04
USB情報を取得
まず、必要なのはデバイスのUSB情報にあるベンダーIDとプロダクトIDだ。ベンダーIDは企業ごとにあるIDでマックアドレスのベンダーコードよのうなもの。プロダクトIDは名前の通り、プロダクトのIDで企業が決めるIDである。
今回使うNFCカードリーダーを調べたところ以下の通りだった。
vender | product |
---|---|
0x054c | 0x06c1 |
usbの接続情報をみる方法はいくつかある。
lsusb
lsusb
コマンドを打つとずらっと接続の情報がでる。接続したデバイスが何かを調べる場合、プリミティブな方法だが抜き差しでの表示する差分で把握する。
$ lsusb Bus 002 Device 002: ID 8087:8001 Intel Corp. Bus 003 Device 016: ID 054c:06c1 Sony Corp. : Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
割り当てられたUSB BUSがわかったら、更に詳細を表示してみる。(長いから省略)
$ lsusb -s 003:016 -v Bus 003 Device 022: ID 054c:06c1 Sony Corp. : idVendor 0x054c Sony Corp. idProduct 0x06c1 :
syslog
syslog
を監視してデバイス情報を得る。
$ tail -f /var/log/syslog Apr 22 15:24:42 hoge kernel: [455013.359205] usb 3-10.3: new full-speed USB device number 22 using xhci_hcd Apr 22 15:24:42 hoge kernel: [455013.377018] usb 3-10.3: New USB device found, idVendor=054c, idProduct=06c1 Apr 22 15:24:42 hoge kernel: [455013.377022] usb 3-10.3: New USB device strings: Mfr=1, Product=2, SerialNumber=4 Apr 22 15:24:42 hoge kernel: [455013.377024] usb 3-10.3: Product: RC-S380/S Apr 22 15:24:42 hoge kernel: [455013.377026] usb 3-10.3: Manufacturer: SONY Apr 22 15:24:42 hoge kernel: [455013.377028] usb 3-10.3: SerialNumber: 0011179 Apr 22 15:24:42 hoge kernel: [455013.378153] port100 3-10.3:1.0: NFC: Sony NFC Port-100 Series attached (firmware v1.11) Apr 22 15:24:42 hoge mtp-probe: checking bus 3, device 22: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10.3" Apr 22 15:24:42 hoge mtp-probe: bus: 3, device: 22 was not an MTP device
udevルールの作成
/etc/udev/rules.d
にルールファイルを作成する。書き方の詳細
$ sudo vim /etc/udev/rules.d/80-nfc.rules SUBSYSTEM=="usb", ATTR{idVendor}=="054c", ATTR{idProduct}=="06c1", SYMLINK+="nfc"
早速抜き差ししてデバイスフォルダを見てみるとありました。
$ ls -la | grep nfc lrwxrwxrwx 1 root root 15 4月 22 15:55 nfc -> bus/usb/003/023
launch Minecraft Server on Raspberry Pi 2
Minecraft Serverをラズパイ2で動作させる。
運用に耐えれるのか否か。
- Minecraft vanilla server 1.8.3
- Raspberry pi 2
結論
いきなり結論から言わせてもらうと、なんとか運用はできるレベル だと思う。
自分のような以下の条件に当てはまる人は許容範囲なのかな。
DEFAULT
マップで普通にサバイバルして楽しむ- 人数は3~4人 (それ以上は試していない)
- 少人数でコツコツと自分たちの世界を作る
- たまにラグるときはあるが気にしない
今の自分には十分なのだが、ガッツリ運営したい人向けではないと思う。
不安な部分は以下の通り。
- マップ作成での
AMPLIFIED
はやばい。 - 農業や家畜、経験値トラップなど作り、世界を拡大していった場合どうなるのかはまだ未知数
- マップ探索や、クリエイティブモードなどでグイグイ前に行くと処理が追いつかなくて落ちる場合あり
特にクリエイティブモードの舞空術はマジ危険。結構な率で落ちる。
launch Minecraft Server
すごく簡単。他とかわらない。ラズパイ2はjava
がすでにあるので5分で終わるw
download
# 起動時にファイルが生成されるのでフォルダを作成 $ mkdir -p ~/mc $ cd ./mc # download $ wget https://s3.amazonaws.com/Minecraft.Download/versions/1.8.3/minecraft_server.1.8.3.jar
認証とプロパティ設定
初回、Minecraftサーバを起動するとEULA認証ファイルが無いためすぐに終了する。
認証の同意はファイルを編集する。
# EURAファイルなど生成するため起動 $ java -Xmx1024M -Xms512M -jar ./minecraft_server.1.8.3.jar nogui [09:17:13] [Server thread/INFO]: Starting minecraft server version 1.8.3 [09:17:13] [Server thread/INFO]: Loading properties # EULA認証ファイルがないために終了 [09:17:13] [Server thread/WARN]: Failed to load eula.txt [09:17:13] [Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info. [09:17:13] [Server thread/INFO]: Stopping server [09:17:13] [Server Shutdown Thread/INFO]: Stopping server
EULA認証
EULA認証はeula.txt
を編集するだけ。
# ライセンスの同意 $ vim ./eula.txt # false -> true eula=true
プロパティ設定
変更点はほとんどない。ただサーバ負荷を減らすためにview-distance
を調整する。
$ vim ./server.properties view-distance=7 # 10->7 gamemode=0 # 0:サバイバル / 1:クリエイティブ / 2:アドベンチャー level-seed=xxx # ワールド生成時にシード値指定したい場合はここに
起動準備
起動したら基本放置。いつまでもターミナルを開いているのもあれだ。
screen
コマンドでログアウトしても動き続けるシェルを実行しておく。
screen
コマンドのインストール
$ sudo apt-get install screen
起動スクリプトの作成
すぐにアクセスできるようにセッション名を-S
で指定しておく。
# 起動スクリプトファイルの編集 $ vim ./start.sh #!/bin/bash echo "start minecraft server !!!!" screen -S minecraft java -Xmx1024M -Xms512M -jar minecraft_server.1.8.3.jar nogui # 実行権限付与 $ chmod 755 ./start.sh
起動
起動するとマップ作成が始まる。Done
まで待つ
$ ./start.sh [09:55:03] [Server thread/INFO]: Starting minecraft server version 1.8.3 [09:55:03] [Server thread/INFO]: Loading properties [09:55:03] [Server thread/INFO]: Default game type: SURVIVAL [09:55:03] [Server thread/INFO]: Generating keypair [09:55:03] [Server thread/INFO]: Starting Minecraft server on *:25565 [09:55:03] [Server thread/INFO]: Using epoll channel type [09:55:03] [Server thread/INFO]: Preparing level "world" [09:55:03] [Server thread/INFO]: Preparing start region for level 0 : [09:55:03] [Server thread/INFO]: Preparing spawn area: 91% [09:55:04] [Server thread/INFO]: Done (xxxxxs)! For help, type "help" or "?" # 終了する場合は、このターミナルで`stop`
screen
シェルを抜けるにはデタッチ(ctrl+a
、ctrl+d
)する。
再度アクセスしてサーバ操作したい場合は(screen -r minecraft
)でアクセスできる。
現在、普通に運用できていて数人の友人が好きなときにアクセスして作業してる。
そのためラズパイは完全マイクラ専用サーバとなっているのだ。
下手に遊べないから新しいの買おうかと思ったら5千円近くに値上がってんの。アベノミクス乙www
次回は番外編としてバニラサーバーよりも軽量なMCServer
の紹介を書きたいと思う。
Raspberry Pi 2 (setting)
基本的な初期設定をメモ
イメージ書き込みはこちら
SSHでアクセスする
# ユーザ名は`pi` $ ssh pi@<raspberry pi ip> # passowrdは`raspberry`
最新の状態にしておく
$ sudo apt-get update; sudo apt-get upgrade -y
raspi-config
ラズパイ用のコンフィグ画面を表示
$ sudo raspi-config
私の場合、やっておくのは最低以下の2つ。
キーボードとかは後で。
- Expand Filesystem : SDの残りの領域を拡張する
- Timezone : タイムゾーン設定
Expand Filesystem
SDの残りの領域を拡張する
Expand Filesystem
OK
押して再起動する
Timezone
タイムゾーンを東京にする
Internationlaisation Options
Change Timezone
Asia
Tokyo
vimの導入
vi
はあるけど物足りない。やっぱvim
がほしいところ。
私はほとんどnano
を使わないので操作には困惑する。そのためデフォルトエディタも変更する。
vim install
vimrc
とかプラグインとかはいつかまとめたいな。
$ sudo apt-get install vim
デフォルトエディタの変更
3. /usr/bin/vim.basic
を選択してデフォルトディタを変更する
$ sudo update-alternatives --config editor There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode Press enter to keep the current choice[*], or type selection number:
ホスト名の変更とか
ローカルネットワークでアクセスに便利なので設定
ホスト名の変更
$ sudo vim /etc/hostname hoge-pi $ sudo vim /etc/hosts 127.0.1.1 hoge-pi
avahi-daemon
のインストール
ローカルネットワークアドレスの名前解決 (mDNS)
$ sudo apt-get update $ sudo apt-get install avahi-daemon
これのおかけでローカルネットワーク同士がホスト名でアクセスできる。マックはBonjour
だったと思う。
<host名>.local
でアクセスできる。
セキュリティー関係の設定
デフォルトのユーザでもいいけど、外部からもアクセスしたい。
新規作成してssh
も鍵を使ったアクセスのみとする。
新規ユーザーの設定してsudoユーザ化
# user作成 $ sudo adduser hoge # sudoユーザに追加 $ sudo gpasswd -a hoge sudo
デフォルトユーザの権限変更
- piユーザの
sudo
権限をなくす
# piユーザをsudoグループから外す $ sudo gpasswd -d pi sudo # piユーザのsudoerから除外する $ sudo visudo # 以下のようにコメントアウトする # pi ALL=(ALL) NOPASSWD: ALL
ssh
関連の設定
クライアントの公開鍵の登録
- client側
# RSAで生成する。パスワードをつけるかは好みで。 client$ ssh ssh-keygen # ラズパイに公開鍵を渡しておく client$ scp ~/.ssh/id_rsa.pub hoge@hoge-pi.local
- server(ラズパイ)側
# clientの公開鍵を登録 server$ cat ~/rsa.pub > .ssh/autorized_keys
sshdコンフィグの設定
# コンフィグの編集 $ sudo vim /etc/ssh/sshd_config PermitRootLogin no # rootでのログインを無効 PasswordAuthentication no # パスワードによるログインを無効 # sshdのリスタート $ sudo service ssh restart
これで自分が作成したユーザでログインして色々と遊ぶ。
次回はマインクラフトサーバをば。