moshって何?
前回紹介させて頂いた記事にmoshと言うキーワードがあり何?ってことで調べたらsshに変わるmobile shellとのこと。
MobaXterm を ssh/mosh/X11 クライアントとして使う(Windows)
http://qiita.com/mkasahara/items/c029154b5436913b20e0
Mosh(mobile shell)
https://mosh.mit.edu/
仕組みは下記サイトが分かりやすいです。
Jun Mukai’s blog – mosh (mobile shell)の論文を読んでみた
http://blog.jmuk.org/2012/04/mosh-mobile-shell.html
2012年4月の記事ですが全く知りませんでした。
CentOS 7ではepel repoに含まれていましたのでepel-releaseをインストールしてからmoshをインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
[root@host01 ~]# yum -y epel-release [root@host01 ~]# yum -y install mosh 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: mirrors.hustunique.com * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ mosh.x86_64 0:1.2.5-1.el7 を インストール --> 依存性の処理をしています: perl(IO::Socket::INET6) のパッケージ: mosh-1.2.5-1.el7.x86_64 --> 依存性の処理をしています: libprotobuf.so.8()(64bit) のパッケージ: mosh-1.2.5-1.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ perl-IO-Socket-INET6.noarch 0:2.69-5.el7 を インストール --> 依存性の処理をしています: perl(Socket6) のパッケージ: perl-IO-Socket-INET6-2.69-5.el7.noarch ---> パッケージ protobuf.x86_64 0:2.5.0-8.el7 を インストール --> トランザクションの確認を実行しています。 ---> パッケージ perl-Socket6.x86_64 0:0.23-15.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: mosh x86_64 1.2.5-1.el7 epel 240 k 依存性関連でのインストールをします: perl-IO-Socket-INET6 noarch 2.69-5.el7 base 20 k perl-Socket6 x86_64 0.23-15.el7 base 27 k protobuf x86_64 2.5.0-8.el7 base 338 k トランザクションの要約 ================================================================================ インストール 1 パッケージ (+3 個の依存関係のパッケージ) 総ダウンロード容量: 626 k インストール容量: 2.0 M Downloading packages: (1/4): perl-IO-Socket-INET6-2.69-5.el7.noarch.rpm | 20 kB 00:00 (2/4): protobuf-2.5.0-8.el7.x86_64.rpm | 338 kB 00:00 (3/4): perl-Socket6-0.23-15.el7.x86_64.rpm | 27 kB 00:00 warning: /var/cache/yum/x86_64/7/epel/packages/mosh-1.2.5-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY mosh-1.2.5-1.el7.x86_64.rpm の公開鍵がインストールされていません (4/4): mosh-1.2.5-1.el7.x86_64.rpm | 240 kB 00:00 -------------------------------------------------------------------------------- 合計 1.9 MB/s | 626 kB 00:00 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。 Importing GPG key 0x352C64E5: Userid : "Fedora EPEL (7) <epel@fedoraproject.org>" Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5 Package : epel-release-7-5.noarch (@extras) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : perl-Socket6-0.23-15.el7.x86_64 1/4 インストール中 : perl-IO-Socket-INET6-2.69-5.el7.noarch 2/4 インストール中 : protobuf-2.5.0-8.el7.x86_64 3/4 インストール中 : mosh-1.2.5-1.el7.x86_64 4/4 検証中 : perl-IO-Socket-INET6-2.69-5.el7.noarch 1/4 検証中 : protobuf-2.5.0-8.el7.x86_64 2/4 検証中 : perl-Socket6-0.23-15.el7.x86_64 3/4 検証中 : mosh-1.2.5-1.el7.x86_64 4/4 インストール: mosh.x86_64 0:1.2.5-1.el7 依存性関連をインストールしました: perl-IO-Socket-INET6.noarch 0:2.69-5.el7 perl-Socket6.x86_64 0:0.23-15.el7 protobuf.x86_64 0:2.5.0-8.el7 完了しました! [root@host01 ~]# ll /usr/bin/mosh* -rwxr-xr-x. 1 root root 9890 8月 6 2015 /usr/bin/mosh -rwxr-xr-x. 1 root root 407696 8月 6 2015 /usr/bin/mosh-client -rwxr-xr-x. 1 root root 382416 8月 6 2015 /usr/bin/mosh-server |
moshはDaemonでは無くてその都度、起動することになります。
1. sshで接続
2. mosh起動
3. mosh clientはUDP(60000~61000)でmosh serverと接続
のような動きになります。
そしてmosh clientとmosh server間はssh証明書を流用して暗号化するようです。
さてmoshのインストールはこれだけなのですが、ついでにFirewallの設定もしてしまいます。
通信はUDPでデフォルポートは60000~61000になります。1セション1ポートなので今回は10セッションの60000~60009を許可します。
勉強も兼ねて新しいサービスを作成して許可してみます。
- デフォルトで定義されているサービス
- Firewall Serviceの作成
- firewall-cmd reload
- mosh service許可
1 2 |
[root@host01 ~]# firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https |
この定義ファイルは/usr/lib/firewalld/services/にあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
[root@host01 ~]# ll /usr/lib/firewalld/services/ 合計 216 -rw-r-----. 1 root root 559 11月 20 21:34 RH-Satellite-6.xml -rw-r-----. 1 root root 412 11月 20 21:34 amanda-client.xml -rw-r-----. 1 root root 320 11月 20 21:34 bacula-client.xml -rw-r-----. 1 root root 346 11月 20 21:34 bacula.xml -rw-r-----. 1 root root 227 11月 20 21:34 dhcp.xml -rw-r-----. 1 root root 305 11月 20 21:34 dhcpv6-client.xml -rw-r-----. 1 root root 234 11月 20 21:34 dhcpv6.xml -rw-r-----. 1 root root 346 11月 20 21:34 dns.xml -rw-r-----. 1 root root 836 11月 20 21:34 freeipa-ldap.xml -rw-r-----. 1 root root 836 11月 20 21:34 freeipa-ldaps.xml -rw-r-----. 1 root root 315 11月 20 21:34 freeipa-replication.xml -rw-r-----. 1 root root 374 11月 20 21:34 ftp.xml -rw-r-----. 1 root root 476 11月 20 21:34 high-availability.xml -rw-r-----. 1 root root 353 11月 20 21:34 http.xml -rw-r-----. 1 root root 448 11月 20 21:34 https.xml -rw-r-----. 1 root root 372 11月 20 21:34 imaps.xml -rw-r-----. 1 root root 454 11月 20 21:34 ipp-client.xml -rw-r-----. 1 root root 427 11月 20 21:34 ipp.xml -rw-r-----. 1 root root 517 11月 20 21:34 ipsec.xml -rw-r-----. 1 root root 264 11月 20 21:34 iscsi-target.xml -rw-r-----. 1 root root 233 11月 20 21:34 kerberos.xml -rw-r-----. 1 root root 221 11月 20 21:34 kpasswd.xml -rw-r-----. 1 root root 199 11月 20 21:34 ldap.xml -rw-r-----. 1 root root 232 11月 20 21:34 ldaps.xml -rw-r-----. 1 root root 385 11月 20 21:34 libvirt-tls.xml -rw-r-----. 1 root root 389 11月 20 21:34 libvirt.xml -rw-r-----. 1 root root 424 11月 20 21:34 mdns.xml -rw-r-----. 1 root root 211 11月 20 21:34 mountd.xml -rw-r-----. 1 root root 190 11月 20 21:34 ms-wbt.xml -rw-r-----. 1 root root 171 11月 20 21:34 mysql.xml -rw-r-----. 1 root root 324 11月 20 21:34 nfs.xml -rw-r-----. 1 root root 389 11月 20 21:34 ntp.xml -rw-r-----. 1 root root 335 11月 20 21:34 openvpn.xml -rw-r-----. 1 root root 433 11月 20 21:34 pmcd.xml -rw-r-----. 1 root root 474 11月 20 21:34 pmproxy.xml -rw-r-----. 1 root root 460 11月 20 21:34 pmwebapi.xml -rw-r-----. 1 root root 544 11月 20 21:34 pmwebapis.xml -rw-r-----. 1 root root 357 11月 20 21:34 pop3s.xml -rw-r-----. 1 root root 181 11月 20 21:34 postgresql.xml -rw-r-----. 1 root root 261 11月 20 21:34 proxy-dhcp.xml -rw-r-----. 1 root root 446 11月 20 21:34 radius.xml -rw-r-----. 1 root root 214 11月 20 21:34 rpc-bind.xml -rw-r-----. 1 root root 311 11月 20 21:34 rsyncd.xml -rw-r-----. 1 root root 384 11月 20 21:34 samba-client.xml -rw-r-----. 1 root root 461 11月 20 21:34 samba.xml -rw-r-----. 1 root root 550 11月 20 21:34 smtp.xml -rw-r-----. 1 root root 463 11月 20 21:34 ssh.xml -rw-r-----. 1 root root 393 11月 20 21:34 telnet.xml -rw-r-----. 1 root root 301 11月 20 21:34 tftp-client.xml -rw-r-----. 1 root root 437 11月 20 21:34 tftp.xml -rw-r-----. 1 root root 211 11月 20 21:34 transmission-client.xml -rw-r-----. 1 root root 593 11月 20 21:34 vdsm.xml -rw-r-----. 1 root root 475 11月 20 21:34 vnc-server.xml -rw-r-----. 1 root root 310 11月 20 21:34 wbem-https.xml |
firewall-cmdでスマートに作成する方法もあるようですが、取り敢えず力技で(^^;
dhcp.xmlを元にmosh.xmlを作成します。
1 2 3 4 5 6 7 8 9 |
[root@host01 ~]# cp /usr/lib/firewalld/services/dhcp.xml /etc/firewalld/services/mosh.xml [root@host01 ~]# vi /etc/firewalld/services/mosh.xml [root@host01 ~]# cat /etc/firewalld/services/mosh.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>mosh</short> <description>This allows a mosh server to accept from mosh clients.</description> <port protocol="udp" port="60000-60009"/> </service> |
reloadすると定義したmoshが利用できるようになります。
1 2 3 4 |
[root@host01 ~]# firewall-cmd --reload success [root@host01 ~]# firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https |
許可します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@host01 ~]# firewall-cmd --add-service=mosh --zone=public --permanent success [root@host01 ~]# firewall-cmd --reload success [root@host01 ~]# firewall-cmd --list-all public (default, active) interfaces: eno16777736 sources: services: dhcpv6-client mosh ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: |
これでサーバ側の設定は終わりました。
次回はMobaXtermでmosh serverに接続してみます。