moshはsshの代替サービスとして開発されたソフトウェア。
“the MObile SHell“が由来ということで、
モバイルデバイスからでも操作がしやすい工夫が施されている。
【特徴】
1、ローカルエコーなのでサクサク。
sshは入力した情報を一旦サーバに送り
その結果をサーバから受け取り表示する(リモートエコー)ので、
回線が細いと入力と表示にタイムラグがあり、イライラ・・・
moshはサーバへ入力情報を送ると同時に
送った情報を表示する(ローカルエコー)ので、
回線に関係なく入力が手元に即座に反映される。
2、一度切断しても自動で再接続:接続元IPが変わっても問題なし。
UDPを使いセッションを張らずに通信していて、
一旦サーバとの接続が切れても、
サーバとクライアント間の通信環境が整えば自動で再開される。
IPが変わっても関係なく再接続される。
インストール環境
クライアント:macOS mountain lion
サーバ:ubuntu 12.04
※ユーザー認証はSSHを使うのでSSHの設定は必要です。
まずはmac側。
https://github.com/downloads/keithw/mosh/mosh-1.2.1.pkg
からパッケージをダウンロードしてインストール。
ubuntu側
aptitude install mosh
&環境に合わせてファイアウォール等のUDPの60000から61000を解放。
クライアントから
mosh --ssh="ssh -p sshのポート番号 -i 認証鍵" ユーザー名@サーバ
で繋がるはずが、
mosh-server: invalid option -- 'l' Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...] mosh-server: invalid option -- 'l' Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...] mosh-server: invalid option -- 'l' Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...] mosh-server: invalid option -- 'l' Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...] mosh-server: invalid option -- 'l' Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...] mosh-server: invalid option -- 'l' Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...] mosh-server: invalid option -- 'l' Usage: mosh-server new [-s] [-i LOCALADDR] [-p PORT] [-c COLORS] [-- COMMAND...] setlocale: No such file or directory Connection to サーバ名 closed. /usr/bin/mosh: Did not find mosh server startup message.
サーバを見ると
less /var/log/auth.log Nov 26 21:55:11 サーバ名 sshd[15154]: Accepted publickey for ubuntu from クライアントIP port 63170 ssh2 Nov 26 21:55:11 サーバ名 sshd[15154]: pam_unix(sshd:session): session opened for user ユーザー名 by (uid=0) Nov 26 21:55:12 サーバ名 sshd[15225]: Received disconnect from クライアントIP: 11: disconnected by user Nov 26 21:55:12 サーバ名 sshd[15154]: pam_unix(sshd:session): session closed for user ユーザー
とsshでの認証まではうまく行っている模様。
setlocaleのエラーも出てるし文字コード周りが怪しかったので、確認。
ubuntu側
locale -------------------- LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= --------------------
mac側
locale -------------------- LANG="ja_JP.UTF-8" LC_COLLATE="ja_JP.utf-8" LC_CTYPE="ja_JP.utf-8" LC_MESSAGES="ja_JP.utf-8" LC_MONETARY="ja_JP.utf-8" LC_NUMERIC="ja_JP.utf-8" LC_TIME="ja_JP.utf-8" LC_ALL="ja_JP.utf-8" -------------------
この辺りが噛み合ってない??
ということで、文字コードを指定して、
LC_ALL=en_US.UTF-8 mosh --ssh="ssh -p sshのポート番号 -i 認証鍵" ユーザー名@サーバ
でOKでした!