- 投稿日:2019-03-24T15:34:44+09:00
【勝手に毎日投稿祭り】スイッチングハブを勢いで購入したので、物理サーバとWindows端末の通信に使ってみた
※1週間限定で、「勝手に毎日投稿祭り」と題して毎日投稿しています。
ぜひぜひ、皆さんも便乗して下さい。スイッチングハブを使ったことありますか?
私は、スイッチングハブやルータが、業務で使われているものは見てきたが、自分で設定をしたり、使ったことはない。
家庭にあるルータも業者が設定をしてから自分で何かいじることはなかった。ルーティングとかの勉強はしてもそれを活かせる実践の場がなかったのだ。
先日、夜勤作業があった帰りにECサイトを見ていたら、1000円程で手に入るのが分かり、夜勤明けでイケイケな気分だったこともあり、即購入ボタンを押していた。
「買ってしまった」
「もったいないし、ちゃんと使わなあかんやん」
と、いうことで特に下調べとかせずに買ってしまったスイッチングハブを使ってみることにした。
まず、開封すると説明書があった。「ふむふむ、装置の名称ね、設置場所の注意点ね、接続できないときの確認ポイントね・・・、って後はないんかい!?」
操作説明とかあるかと思ったら、特に使い方の説明はない。しょうがないので、とりあえず、使ってみることにした。
思い付きで、買っていた為、LANケーブルも一本しかなく、先ほど買い足してとりあえず、こんな風にしてみた。
配線の汚さは見なかったことにしてください。
今回は、物理サーバ(CentOS6.9)とPC端末(Windows)を繋いで、以下のように接続して使用します。
まずは、同じネットワークで繋がるように、CentOS、Windowsそれぞれに以下のように設定をした。
CentOS6.9
/etc/sysconfig/network-scripts/ifcfg-eth0ファイル内にIPADDRとNETMASKを追加し、ONBOOTとBOOTPROTOに関しては、以下のように書き換えた。
~略~ IPADDR=192.168.10.10 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=noneネットワークを再起動し、IPアドレスが適応されていることを確認
service network restart ip addrその他、vsftpdのパッケージをインストールし、サービスを立ち上げと自動起動設定をして、ファイアウォールとSElinuxの無効化を行った。
Windows
ネットワークとインターネットのネットワーク接続から、LANケーブルで使用するイーサネットのIPv4に設定する
上記を右クリックし、プロパティをクリック→ネットワークプロトコルバージョン4(TCP/IPv4)をクリック→プロパティをクリック
すると、以下のようなダイアログが表示されるので、IPとサブネットマスクに設定を入力しOKボタンを押下
では、これで使えるかやってみる
Windows側で、コマンドプロンプトを立ち上げ、まずは、pingが通るか
通った!
次に、ftp接続ができるかやってみる。
接続できた。
スイッチングハブ自体には、設定なく繋ぐだけで使えることが分かった。これから活用してみようと思う。
皆さんも、手ごろな価格で手に入るので、是非、試してみて下さい。
- 投稿日:2019-03-24T14:45:36+09:00
Macbook に Debian系 Linux をインストールした後にすること
はじめに
Macbook に Debian系 Linux をインストールした際に色々と初期設定することをここにまとめておく。
不定期に更新していくことになる。iSight を使えるようにする
iSight は Macbook の内蔵カメラのこと。ファームウェアのコピーが必要となる。
なにか色々と問題がありそうなので、参考になるリンクを貼っておく。
「isight-firmware-tools」と言うツールを使う。$ sudo apt-get install isight-firmware-tools「isight-firmware-tools」を実行してファームウェアファイルを要求されるのでファイルの場所を指定すれば完了。
リブートすれば「iSight」が使えるようになる。cheeseなどのカメラツールで動作確認する。
「isight-firmware-tools」実行時にファームウェアが無いと「isight-firmware-tools」が実行できなくなる。そのためアンインストールしてから再インストールすることになる。$ sudo apt-get remove --purge isight-firmware-tools $ sudo apt-get install isight-firmware-toolsファンクションキーのデフォルト設定
ファンクションキーが「fn」キーを押しながらでないときかない。
「fn」キーを押しながらでなくてもファンクションキーとして動作するようにする設定。$ sudo su # echo 2 > /sys/module/hid_apple/parameters/fnmode
- 投稿日:2019-03-24T11:39:23+09:00
ディープラーニングを始めたいひとのLinux環境構築【Python×Keras】
LinuxでKerasを動かす際の環境構築手順をまとめました。
ディストリビューションはUbuntu 16.04 LTS、GPUで学習を行うことを想定しています。
なお、本投稿によって生じた全ての事象について私は責任を負いかねますので、必ず自己責任で行うようお願いします。
今回はこのような流れで進めていきます。
- はじめに
- Google Chromeをインストール
- Visual Studio Codeをインストール
- fishをインストール
- Pythonをインストール
- CUDAをインストール
- Tensorflow/Kerasをインストール
- Kerasでmnistの学習を実行
- 終わりに
はじめに
まずはじめにターミナルを開き、下記を実行しておきます。
$ sudo apt update $ sudo apt upgradeGoogle Chromeをインストール
普通にChromeをインストールしようとすると「インストール中」でフリーズするので、まず下記のパッケージをインストールする必要があります。
$ sudo apt install libappindicator1 # ここでエラーが発生する場合は現状インストールされているChromeを削除します。 $ sudo apt remove google-chrome-stableその後下記URLから
.devのインストーラをダウンロード、インストールを行います。
https://www.google.co.jp/chrome/browser/desktop/下記コマンドでChromeが起動します。
$ google-chromeVisual Studio Codeをインストール
ソースコードを編集する際に必要なエディタをインストールします。
ソースコードエディタは種類が豊富で、PythonにはPyCharmという統合開発環境もありますが、個人的な好みと拡張機能の多さから今回はVisual Studio Code(以下VSCode)をインストールします。
Ubuntuを使っているので下記URLから.debのインストーラをダウンロード、インストールを行います。
https://code.visualstudio.com/downloadその後下記コマンドでVSCodeが起動します。
$ codeまた下記の基本的な拡張機能をインストールしておくと便利です。
- Japanese Language Pack for VS Code
- Python extension for Visual Studio Code
次にUbuntuはデフォルトのフォントが少々見づらいので、フォントを
Fira Codeに変更します。
下記Githubの指示に沿ってインストールしていけばいいのですが、今回は下部のManual Installation通りにインストールしました。
https://github.com/tonsky/FiraCode/wiki/Linux-instructions#installing-with-a-package-managerまずシェルスクリプトを作ります。
$ touch download_and_install.sh上記のファイルを開き、リンク先に書いてあるソースコードをコピペします。
download_and_install.sh#!/usr/bin/env bash fonts_dir="${HOME}/.local/share/fonts" if [ ! -d "${fonts_dir}" ]; then echo "mkdir -p $fonts_dir" mkdir -p "${fonts_dir}" else echo "Found fonts dir $fonts_dir" fi for type in Bold Light Medium Regular Retina; do file_path="${HOME}/.local/share/fonts/FiraCode-${type}.ttf" file_url="https://github.com/tonsky/FiraCode/blob/master/distr/ttf/FiraCode-${type}.ttf?raw=true" if [ ! -e "${file_path}" ]; then echo "wget -O $file_path $file_url" wget -O "${file_path}" "${file_url}" else echo "Found existing file $file_path" fi; done echo "fc-cache -f" fc-cache -fdownload_and_install.shを実行します。
$ sh download_and_install.shこれでFira Codeをインストールできたので、VSCodeに適用します。
メニューの「Code」→「基本設定」→「設定」を開き、
Editor:Font Familyを"Fira Code Retina"、
Editor: Font Ligaturesを有効にすればフォントが変更されます。
変更されないときはRetina部分をRegularや、Boldにしたりしてみてください。
あとはメニューの「Code」→「基本設定」→「配色テーマ」から、カラーテーマを好きなものに変更します。最後に個人的に不便なプレビューモードを解除しておきます。
Workbench › Editor: Enable Previewと、
Workbench › Editor: Enable Preview From Quick Openを無効にすればOKです。fishをインストール
引き続きターミナルを操作していきますが、今回はshellにfishを使用します。
fishはfriendly interactive shellの略称とのことですが、特徴はやはりわかりやすさだと感じます。コマンドを途中まで入力するとその先をわかりやすく補完してくれたり、シンタックスハイライトによってそのコマンドが正しいのか間違っているのかということも示唆してくれます。
Ubuntuのデフォルトシェルはbashですが、一応現在のシェルを確認しておきます。現在のシェルはSHELLという環境変数に設定されているので$SHELLの中身を出力することで確認できます。$ echo $SHELL /bin/bashそれではデフォルトシェルをbashからfishに変更していきます。
まずはfishをインストールします。$ sudo apt install fishインストールができたら、fishのパスを確認します。
$ which fish /usr/local/bin/fish自分のマシン環境で使用可能なシェル一覧を確認します。
$ cat /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh /usr/local/bin/fish末尾に上記fishのパスが追加されていたらOKですが、なければvimを使って手動で追記します。
下記コマンドでvimエディタを開いたらiでインサートモードに切り替え、テキストを入力します。
入力が終わったらescでノーマルモードに戻り、:wで上書き保存、:qでエディタを閉じます。$ sudo vim /etc/shells # vimがインストールされていなかったら下記を実行します。 $ sudo apt install vim下記コマンドでデフォルトシェルをfishに変更します。
chsh -s /usr/local/bin/fishこれでデフォルトシェルを変更できました。パソコンを一度ログアウトするとこの変更が適用されます。
再ログインして変更が適用されたかを確認します。ターミナルを起動し、最初のメッセージがbashのときから変わってWelcome to fish, the friendly interactive shellと表示されていたらOKです。一応現在の環境変数も確認しておきます。$ echo $SHELL /usr/local/bin/fishなお、現在使用しているシェルは下記方法でも確認できます。
cat /etc/passwd | grep usernameデフォルトシェルはbashのままfishを起動したい場合は
.bashrcの末尾にexec fishと記述しておけば同様にfishを使用できます。Pythonをインストール
pyenvをインストール
pyenvはPythonのバージョン管理ができるコマンドラインツールです。
pyenvを使うことで例えばディレクトリAではPython2系を使う、ディレクトリBではPython3系を使うといったことが可能になります。
公式Github:https://github.com/pyenv/pyenv/wiki
まず上記Githubからpyenvをホームディレクトリにダウンロードします。$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv # Gitがインストールされておらず、上記でエラーが起こる場合はまずこちらを実行します。 $ apt install git次にダウンロードしたpyenvのパスを通します。
「パスを通す」とは「コマンド検索パスを追加する」ことだと考えるとわかりやすいです。コマンドライン上に入力したコマンド(例えばlsやcd)が正しく動作するのと同じように、コマンドライン上でpyenvと入力したらどのファイルを実行してねということを設定します。
現時点ではパスを通していないので下記を実行しても何も表示されません。$ which pyenvそれではpyenvのパスを通します。今回はシェルスクリプトにfishを使っているので書き込み先は
.config/fish/config.fishです。$ echo 'set -x PATH $HOME/.pyenv/bin $PATH' >> .config/fish/config.fish $ echo '. (pyenv init - | psub)' >> .config/fish/config.fish書き込みを適用します。(下記コマンドではなくターミナルを再起動しても適用されます。)
$ source .config/fish/config.fishこれでpyenvのパスが通ったので、再度下記を実行するとパスが表示されます。
$ which pyenv /home/username/.pyenv/binAnacondaをインストール
Anacondaは機械学習やデータサイエンスをするうえで必要になる色々なPythonパッケージをまとめて提供してくれます。
現時点ではどのバージョンもインストールしていないので下記を実行するとsystemというデフォルト項目だけが表示されます。$ pyenv versions * systemインストールできるバージョンを確認します。
下記を実行するとpyenvでインストールできるバージョンがリスト表示されます。$ pyenv install -l今回は
anaconda3-5.2.0をインストールします。anacondaのバージョンが新しすぎるとtensorflowをインストールできないことがあるので注意してください。$ pyenv install anaconda3-5.2.0ここで再度下記を実行するとインストールできていることがわかります。
*が現在適用されているバージョンを示します。$ pyenv versions * system anaconda3-5.2.0 (set by /home/username/.pyenv/version)pyenvではインストールしたバージョンを現在のアカウント全体で使うか、特定のディレクトリだけで使うかを指定することができます。今回はanaconda3-5.2.0をアカウント全体に適用します。
$ pyenv global anaconda3-5.2.0下記を実行すると
*が移動していることがわかります。$ pyenv versions system * anaconda3-5.2.0 (set by /home/username/.pyenv/version)CUDAをインストール
CUDAはGPUを使って学習を行う際に必要になります。
まず公開鍵を取得します。$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub続いてパッケージをダウンロードします。
$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.2.88-1_amd64.debダウンロードしたパッケージをインストールします。
$ sudo dpkg -i cuda-repo-ubuntu1604_9.2.88-1_amd64.debAPTをアップデートし、下記をインストールします。
$ sudo apt update $ sudo apt install cuda cuda-driversここでPCを再起動します。
$ sudo rebootこのあと
.config/fish/config.fishに追記します。$ echo 'set -x PATH /usr/local/cuda/bin $PATH' >> .config/fish/config.fish $ echo 'set -x LD_LIBRARY_PATH /usr/local/cuda/lib64 $LD_LIBRARY_PATH' >> .config/fish/config.fish最後にログオフをして再度ログイン後、下記コマンドを実行、接続しているGPUが表示されたらOKです。
$ nvidia-smiTensorflow/Kerasをインストール
続いてTensorflow、そのあとにKerasの順でインストールします。
今回はGPUを使用するのでtensor-gpuとしていますが、tensorflowだけでも問題はありません。$ conda install tensorflow-gpu $ conda install kerasKerasを実行
最後にKerasでmnistの学習を実行して動作確認をします。
コードはこちらを使用します。
https://github.com/keras-team/keras/blob/master/examples/mnist_cnn.py適当なPythonファイルを作成します。
$ touch train.py作成した
train.pyに上記URLのコードをコピペして保存、下記を実行します。
エラーなく処理が進めばクリアです!$ python train.py終わりに
私なりの手順を書かせていただきましたが、上記の手順のなかで不備や漏れ、お気づきのことがございましたらコメントをいただけますと幸いです。
また本稿作成にあたり下記を参考にさせていただきました。
https://qiita.com/shuntksh/items/1995e87fe5c1ac88296f
https://qiita.com/tkmpypy/items/9bd9692ad44dcd5710da
https://qiita.com/yukoba/items/3692f1cb677b2383c983
- 投稿日:2019-03-24T01:24:42+09:00
Yubikey 5のPIVで遊ぶ ( SSH鍵生成&保管 )
Yubikeyには、PIVという規格/機能が備わっています。これを使って、SSH秘密鍵を生成したり、認証情報を保管したり、署名することができるので、今回はそれで遊びます。
PIV とは
PIVは、Personal Identity Verificationの略で、アメリカ連邦政府で使われているスマートカードの規格です。
連邦職員が所持している身分証明カードは、このPIV規格に沿ったICチップが入っており、自分の身分を証明するために使用します。Yubikeyがあれば、PIV対応のハード/ソフトで認証に使用したりすることができます。
ただ、日本でPIV認証に対応した場所はありません。
なので、今回はPIVにあるRSA/ECC鍵を生成して保管する機能を使って、SSH秘密鍵保管庫としてYubiukeyで遊んでみようと思います。要するに「内部で秘密鍵を保管してくれて、ファイルや文字列をぶん投げると署名して返してくれるUSBデバイス」です。
YubikeyのPIV
PIV機能に対応したYubikeyは、Yubikey 4,5,NEOです。また、NEOはECC鍵に対応しておらず、RSA鍵しか使えません。
USB接続だけではなく、NFCでも使用できます。
YubikeyのPIVには、9a 9c 9d 9eの計4つの「スロット」があります。
つまり、4つの秘密鍵を保管することができます。既にある秘密鍵をYubikeyに保管させることもできますが、Yubikey内で秘密鍵を生成し、公開鍵だけ出力することで、一切秘密鍵を外に持ち出せないようにすることもできます。
そちらのほうが安全なので、今回は後者を使います。対応するアルゴリズムは RSA 1024, RSA 2048, ECC secp256r1 です。
YubikeyのPIV鍵は、PINコードで保護されており、PINコードを入力しないとYubikeyに物理的にアクセスできても使うことはできません。
9a 9c 9d 9eの各スロットは、もともとは利用目的があるため、微妙にPINコードの管理が異なります。
9aと9dは、認証に使うため(パソコンにセットするとか)に作られたため、一度PINコードを入力するとUSB接続が切れるまで使えます。
9cはファイルのデジタル署名に使うため、署名するたびにPINコードが必要になります。
9eは、建物の入館時のドアロックの解除などに使うため、PINコードが必要ありません。
まーーー我々は連邦職員じゃないので、好きなスロット使えば良いですね。実はスロットは9a 9c 9d 9e以外にも82 83 84 ... 95まで20個あります。ここには、9a 9c 9d 9eに以前登録していた鍵が保存されています。
つまり、間違えて、使ってるスロットの鍵を上書きしちゃっても、順次以前使っていた鍵がこのスロットにスライドされて来るのでなんとかなります。ツールのインストール
$ sudo pacman -S yubikey-manager opensc ccid鍵の生成
$ ykman piv generate-key -a RSA2048 9a pubkey.pem $ ykman piv generate-certificate -s "SSH Key" 9a pubkey.pemスロット9aに、RSA2048bitの鍵を生成します。公開鍵はpubkey.pemという名前でカレントディレクトリに生成されます。
また、2つ目のコマンドで、SSHに使用する情報の生成やスロットへの名前付をしています。sshクライアントの設定
.ssh/configに、以下のようにホスト情報を追記します。
IdentityをPKCS11Providerに置き換えて使えます。Host hoge.com User fuga PKCS11Provider /usr/lib/opensc-pkcs11.soこれで、sshするときにPINコードが尋ねられます。
YubikeyのデフォルトPINコードは123456です。公開鍵の変換
Yubikeyの公開鍵を、sshが使える形式に変換します。
$ ssh-keygen -i -m PKCS8 -f pubkey.pem > pubkey.txtpubkey.txtの中には、見覚えのある文字列(公開鍵)があるので、ssh先の
.ssh/authorized_keysに貼り付けましょう。おまけ
PINコードの変更
デフォルトのPINコードは
123456で脆弱なため、変更しましょう。
変更するコマンドは以下です。$ ykman piv change-pinPINコードブロックの解除
PINコードの入力を3回以上間違えると、PINコードがブロックされ、PIV機能が使えなくなります。
PUKコードを使うことで、PINコードを新しものに変更できます。$ ykman piv unblock-pinデフォルトのPUKコードは
12345678です。(デフォルトのPINコードの末尾に78を追加)PUKコードの変更
$ ykman piv unblock-pinPIVリセット
PINコードもPUKコードも忘れてしまった場合、YubikeyのPIV機能をすべてリセットすることができます。
もちろん、保管してある鍵はすべて消去されます。$ ykman piv resetマネジメントキー
マネジメントキーは、鍵の生成やインポートに使います。
デフォルトのマネジメントキーは
010203040506070801020304050607080102030405060708です。自分はマネジメントキーは変更する必要はないと思いますが、変更したい人は
ykman piv change-management-keyで変更できます。まとめ
これで、ssh鍵を物理的に安全に保つことができるようになりました。新しいマシンを触る度に鍵を生成してgithubに公開鍵を登録するよりかは、よっぽど便利なので、ぜひ使っていきたいですね。
参考
https://orebibou.com/2019/03/macos%E3%81%A7ssh-agent%E3%81%AByubikey%E3%81%AE%E9%8D%B5%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8Bopensc%E7%B5%8C%E7%94%B1/
https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html
https://wiki.archlinux.org/index.php/YubiKey#CCID_Smartcard







