2017年6月22日木曜日

MacMiniに外部からSSH接続できるようにしてみる。

例によってふと思った。各端末からmacにsshできたら、それぞれにコンパイラを用意する必要はないしjavaでもなんでも実行できる。じゃあ接続しなきゃ(使命感)

れっつとらい

ここから備忘録。

  1. 暗号鍵作成

パスワードの認証だとガバッちゃうからまず認証用の鍵を作る。
$ cd ~ 
$ mkdir .ssh        
//暗号鍵作成
$ ssh-keygen -t rsa
//ここから「パスフレーズを設定するか」何かを英語で尋ねられるけど、
終わるまでEnter連打でも大丈夫。
//認証公開鍵の複製
$ cat id_rsa.pub >> authorized_keys
//認証鍵のアクセス権変更
$ chmod 600 authorized_keys
この作業後に生成されたid_rsaのファイルを優先で端末に転送しておく。これを-iオプションで鍵に使うことで認証できる。転送が終わったら念のため下記。
//鍵の削除
$ rm id_rsa

  1. ssh設定変更

不本意なお客にノックされたり、入られたりしないように設定をいじる。
$ cd /etc    
//設定ファイルのバックアップ(大切!)
$ sudo cp /etc/sshd_config /etc/sshd_config.back
//設定ファイルを開いて編集
$ sudo emacs /etc/sshd_config
emacsでもviでもいいから開いて、下記のところを編集する。具体的には、前半の項目名と同じところが有るので後ろのyes/noをかえたり、行頭の#を外したりする。編集したら保存を忘れずに。

//ルートでのログイン禁止

PermitRootLogin no


//RSA認証の有効化

RSAAuthentication yes

//"authorized_keys"ファイルの場所

AuthorizedKeysFile      /Users/hoge(ユーザーのid)/.ssh/authorized_keys


//パスワードによる認証不使用

PasswordAuthentication no


//空のパスワードは拒否

PermitEmptyPasswords no


//チャレンジレスポンス認証を不許可

ChallengeResponseAuthentication no

  1. 使用ポートの変更
    ssh標準のポート22を使ってると、やはりノックされまくるらしいので使うポートを変える。
    //設定ファイルを開く
    $ sudo emacs /etc/services
    開いたファイルの下記の箇所を書き換える
    //前
    ssh              22/udp     # SSH Remote Login Protocol
    ssh              22/tcp     # SSH Remote Login Protocol
    
    //後
    ssh              10022/udp     # SSH Remote Login Protocol
    ssh              10022/tcp     # SSH Remote Login Protocol
  2. ホスト側のグローバルIP確認
    ホストのMacからこういうところ(グローバルIPアドレス確認 - CMAN)にアクセスしてグローバルIPを調べてメモっておく。
  3. ルーターの設定からポート開放設定
    自分の家のルータの設定を変更して、上で設定した10022番ポートがホストに回してくれるよう設定する。ルーターごとに設定が違うのでググらなければいけない。我が家は憎きSoftbank光なので以下
    1. 192.168.11.1に接続、user/userでログイン
    2. 詳細設定を開く -> ポート転送
    3. 有効/無効 -> 有効
      プロトコル -> tcp
      WAN/LAN側ポート両方 -> 10022-10022
      転送先IPアドレス -> 自分のMacのローカルip(ネットワーク環境設定から手動設定にして固定するといい)
  4. リモートログインを有効にする
    システム環境設定を開き、共有>リモートログインにチェックを入れる。
ここまでやれば暗号キーを持った端末から
$ ssh -p 10022 -i "鍵のファイル" アカウント名@グローバルIPアドレス
でssh接続できるようになる。is01でemacsを開いてgcc/javacして実行もできるぞ!
グローバルIPとDDNS
グローバルIPアドレスはたまに変わる。これが嫌な場合はDDNSサービスを利用することで解決できる。自分はNo-IPというサービスを使ってアドレスを固定している。サインインしてホストにクライアントを入れるだけの簡単仕様なので調べてみるとよろし。

is01とConnectBot

is01からのssh接続にはConnectBotを使うことにした。至極当たり前だけど、is01にはCtrlキーとEscキーが無い。そのため、ショートカットを用意してくれているんだけど、使いづらい。おまけにShift+数字がファンクションキーの判定になって記号が打てない。

これじゃあコーディングできないじゃん

軽くググると、 ConnectBotはオープンソースなので自分で書き換えてビルドすればいい とのありがたい言葉が出てきた。が、何故かEclipseがうまく動かなかったので断念。更にググると、改変済みのapkを配布している優しい人がいた。神はいる。
ここ(is01アップローダー)からダウンロード、インストールするだけでOK!
ConnectBotで鍵ファイルを使う場合は
1. SDカードに鍵ファイルを転送
2. ConnectBotを開きMeueキーから公開鍵管理を開く
3. Meueキーからインポートを選んで、鍵ファイルを選択
4. 一度失敗してもいいからホストに接続を試みる
5. Backキーで一覧に戻って履歴を長押し>接続ホストの編集
6. 「公開鍵認証を使用」をタップして、さっきインポートした鍵を選ぶ
で準備完了。
このapkのConnectBotはShift+数字が正しく記号になるのに加えて、”絵・顔・記”キーが”Ctrl”,”文字”キーが”Esc”に当てられてる。これでコーディングができるねやったね!

参考

No-IP : https://www.noip.com/
ソフトバンク 光ユニット ポート開放 : https://www.akakagemaru.info/port/bbunit.html
スマホからSSHで自宅のMacへ接続する方法 (前編) : http://jrkl.hatenablog.com/entry/ssh_connect1
Macに外部からアクセス出来るようにする方法 : https://rcmdnk.com/blog/2013/10/29/computer-mac/

2017年6月9日金曜日

U-mobileLTE使い放題とモバイルルーター

徹夜でレポートを書いている時ふと思った。
モバイルルーターがあれば、外で確保すべきものが電源だけになってやりやすい。
ついでに端末をいくつ持っても、モバイルルーターがあればネットに繋げられる。テザリングでメイン端末の電池持ちを心配することもない。そんなわけでモバイルルーターと、せっかくなんでLTE使い放題のSIMを使ってみようと思った。

2017年5月19日金曜日

nexus7とdeep sleep

つい先日、おじいちゃんに貸し出されていたnexus7(2012)が我が家のiPad2と引き換えに帰ってきた。年をとるとやはりiPadの方が使いやすいのだろうか…それはさておき、寝かせておくのももったいないから活用、というか使えないか考えた結果ROMを焼いて遊ぼうという考えに至った。というかやってみたかった。

CM13を焼く


CMとはCyanogenModの略称で、界隈では有名なカスタムROMのベンダー?ブランド?らしい。今回焼くのはそのバージョン13の非公式ROM(個人がカスタムしたもの)。オリジナルのCM13はAndroid6.0.1をベースにしたROMなので、出来上がるのはMarshmallowな端末ということになる。

参考
Nexus7 2012 にAndroid6.0 Marshmallowを導入してみた - 木陰の魚、エビに喰われる

2017年5月17日水曜日

IS01での失敗と再興

1年くらい前にIS01を買って放置していた。なんとなく気が向いたので色々いじっていたら、shをbashに入れ替えようとした時にbashをchmodしないまま入れ替えてrebootしてしまった。気づかずにターミナルを起動するも落ちる。is01rootも動かない。ここでchmodし忘れたことに気づき絶望。そんなわけで諦めて一か八かオールリセットを試すことにした。

目次

2017年5月15日月曜日

Vivaldiでのあれこれ

普段ブラウザはメインがVivaldi、サブがChromeでやってる。このVivaldiが曲者で、タブスタックやサイドパネルなど便利な機能がある反面、不具合なのか仕様のかわからない挙動もある。個人的な対処の備忘録。

2017-05-15現在 Mac版64bit 1.9.818.49での記事

  • ページ読み込み後にしばらくフリーズする

    ページを読み込んだ後、数秒間一切の操作を受け付けなくなる現象。放置しても治らないよう。そこまで重大な問題ではないけど、急いでいる時には凄まじくストレスになる。
    -> Shift + ⌘ + Delete で「プライベートデータの削除」のメニューを出し、キャッシュとアプリケーションキャッシュを削除する。自分はこれで解消された。

  • Magnetと⌘Hが効かない

    Macで愛用しているウィンドウ管理アプリ「Magnet」。キーボードでウィンドウサイズを定形に変えられる便利なアプリだが、Vivaldiでは効かない。ついでに⌘Hで隠せないときもある。これが地味にイライラさせられる、Chromeでは問題ないのに…
    -> 新しいウィンドウを出すたびに、そのウィンドウを最大化、その後最大化を解除。こうするとウィンドウサイズの変更等々が効くようになる。

  • 入力した文字が化ける

    アドレスバーなんかで文字を入力して検索すると、入力した文字がちょくちょく化けてしまう。文字を未変換のまま削除すると、backspaceの文字コードが入力されてしまうのが原因らしい。未解決の問題なのでアップデートを待つしか無い。
    -> 対処としては未変換での文字の削除を避けること。効率は落ちそうだけど、仕方ない。文字化けした際は日本語部分を削除してかなキー・英数キーを交互に連打したあと再度入力すると文字化けしないときもある。

2017年5月1日月曜日

Java戦車道(Robocode)

楽しいGWに埋もれるほどの課題


大学は5/1,2を休校にし、9連休を与えた。
しかし、学生には途方もない課題だけが残った。
4月末 某所 まっつん

というわけで9連休を手にしましたが、課題の量ですでに頭がいたいです。頑張ります。
それで本題ですが、今回出されている課題の中に

Robocodeで強いロボット(戦車)を作ってレポートを書く。ついでにそのロボットの特徴や戦術をプレゼンしてね。

というのがある。

2017年4月27日木曜日

Boostnoteをしばらく使ってみて思ったこと

BoostnoteとMarkDown記法を本格的に使い始めてほぼ一ヶ月経つので勝手に感想をまとめてみた。ちなみに使いはじめはこんなこと書いていた。

目次

MarkDown記法のいいところ


  • ほぼキードードだけで見やすい文章が作れる
  • 画像も入れられる

これは自分にとって革命だった。かつて講義のノートをプレーンテキストでとっていたことがあったけれど、少しでも見返すときの視認性を考えるとすぐに手間取り始めて最終的にとるのをやめてしまった。特に数学系の式を多用する講義では絶望的だった。ところが、markdownで書くとキーボードからほとんど手を離さず文書を整形し、修飾することができる。ハイフンを大量に並べてウィンドウサイズが変わったときに見栄えが悪いのに苦しんだりしなくて良いのだ。Wordやその互換ソフトのように修飾するのにいちいち該当箇所を選択して対応するボタンをクリックしたりしなくていい。慣れてみるとこんな素晴らしい記法は無いように思える。html互換の記法なので、記法になくても表示したいものはhtmlのタグを調べれば解決するし、Boostnoteを使っている以上はレポートで使っているLatexの数式表示が使えるので、数式も怖くない。これはぜひ一度触れてみるべきものだ、間違いない。