いますぐ実践! Linuxシステム管理

■ いますぐ実践! Linux システム管理 / Vol.272 SSH をもう少し便利に使ってみる


カテゴリー: 2017年01月05日
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ いますぐ実践! Linux システム管理  /  Vol.272  /  読者数:2827名
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

遅ればせながら、あけましておめでとうございます!
そして、大変ご無沙汰いたしております…。

前回発行が6月6日でしたので、ずいぶん間があいてしまいました。
みなさま、お元気でしたでしょうか。
多忙な日々から開放され、楽しいお正月を過ごされましたでしょうか。

こちらは、経年劣化を除けば、いたって健康でしたが、休みの日に本業の
作業をせざるをえないことが多く、かといって振替休日を取得する余裕も
あまりなく、気がづいたら年を越してしまっておりました。

というわけで、世間から忘れ去られないように、という後ろ向きな理由で
たいへん申し訳ありませんが、ひとまず新年一発目をお送りいたします。

初詣で、連休でしか発行できない状態から脱したい! と願うべきかどうか
迷った挙句、別のお願いをしてしまいましたが、そんなことには構わず、
久々にはりきってまいりたいと思います。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 今回のお題 - SSH をもう少し便利に使ってみる (レベル:初級)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

システム管理者にとって、SSH は、生きていくために必須のアイテム! と
言っても過言ではないと思います。

ですので、ls の次によく実行するコマンドであろう ssh を、できる限り
便利に使うべく、日々努力されているのではないかとお察しいたします。

当メルマガでも、SSH のネタは、過去に何度か取り上げております。
(下記は、タイトルに SSH を含むものだけをリストアップしました。)

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Vol.101 - SSH でファイアウォールを越える
http://www.usupi.org/sysad/101.html
Vol.102 - sshd を正しく設定する
http://www.usupi.org/sysad/102.html
Vol.247 - ssh_config を設定してSSHを便利に使う
http://www.usupi.org/sysad/247.html
Vol.248 - SSH でVPNを実現する
http://www.usupi.org/sysad/248.html
Vol.266 - SSHの接続を維持する
http://www.usupi.org/sysad/266.html
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

もう紹介し尽くしたのではないかと思ったりもしましたが、まだ紹介して
いないネタ、新たに発見されたネタが、いくつかあります。

今回は、リハビリも兼ねて、そんな小ネタたちを、ちまちまと紹介させて
いただこうと思います。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ ProxyCommand オプションでファイアウォールの先のマシンに入る

ファイアウォールで守られているネットワーク内のマシンにログインする
場合など、いったんどこかのマシンにログインしてからでないと入れない
ということは、意外に多くあるのではないかと思います。

いちいち、どこかのマシン(以下、中継マシンと呼びます)へ入るのは面倒
です。すぱっと直接、目的のマシン(以下、その先のマシンと呼びます)に
入れたらラクですよね。

実は、「~/.ssh/config」ファイルに下記を書いておく(追記する)だけで
それが実現できます。

……………………………………………………………………………………
Host 中継マシン
IdentityFile ~/.ssh/id_rsa.proxy    ← このあたりの設定はお好みで
IdentitiesOnly yes                  ← 同上

Host その先のマシン
ProxyCommand ssh 中継マシン nc %h %p
……………………………………………………………………………………

「ProxyCommand」オプションを指定すると、サーバを接続する際に、指定
したコマンドを実行します。

つまりここでは、まず中継マシンに SSH でログインし、「nc」コマンド
を実行します。「%h」と「%p」はそれぞれ接続先のマシン(中継マシン)と
使用するポート番号(22)に置き換わります。ですので、中継マシンの SSH
を介して、その先のマシンの SSH につなぐことができます。

実際に実行すると、こうなります。

 ……………………………………………………………………………………
  $ ssh その先のマシン
  Password: (その先のマシンのパスワードを入力)
  その先のマシン$ 
 ……………………………………………………………………………………

上記では、その先のマシンへのログイン時にパスワードを聞かれました。
なお、どちらも公開鍵を指定しなければ、両方からパスワードを聞かれる
ことになります。また、双方ともパスフレーズなしの公開鍵を使うような
設定をしておけば、無言でログインできます。

nc コマンドって何? っていう貴兄は、たとえば下記をご覧ください。

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Vol.190 - Netcat でネットワークをもう少し活用する
http://www.usupi.org/sysad/190.html
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ sshpass でパスワードを自動入力する

パスフレーズなしの公開鍵を使えばいいじゃん、と言われれば、まったく
その通りなのですが、世の中にはそれを許してくれないマシンが存在する
のであります。

そして、そんなことにはお構いなく、スクリプトなどを使って自動で処理
することを強要されることも、多々あります。その際には、パスワードを
自動で入力する必要が生じます。

というわけで、[sshpass」というコマンドを使って、パスワードの入力を
自動化してしまいましょう。
まずは、同名のパッケージをインストールします。

 ……………………………………………………………………………………
  $ sudo apt-get install sshpass    (Debian系の場合)
  $ sudo yum install sshpass        (RedHat系の場合)
 ……………………………………………………………………………………

あとは、使うだけです。簡単な書式を以下に示します。

 ……………………………………………………………………………………
  $ sshpass -p パスワード ssh マシン名
 ……………………………………………………………………………………

「-p」オプションでパスワードを指定し、sshコマンドとログインしたい
マシン名を指定するだけです。
「-e」オプションを指定すると、環境変数「SSHPASS」からパスワードを
得るようになります。

 ……………………………………………………………………………………
  $ SSHPASS=パスワード sshpass -e ssh マシン名
 ……………………………………………………………………………………

コマンドラインでパスワードを指定することに抵抗を感じますが、一応、
ps コマンドで見ると、見えないようにしてくれています。

 ……………………………………………………………………………………
  $ ps -C sshpass -f
  UID   PID  PPID  C STIME TTY        TIME CMD
  usu  6700 27280  0 14:24 pts/8  00:00:00 sshpass -p zzzzzzzz ...
 ……………………………………………………………………………………


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ autossh で自動的に再接続させる

「autossh」コマンドを使うと、SSH のセッションが切れてしまっても、
勝手に再接続をしてくれます。

こちらも、同名のパッケージをインストールしたら、後は使うだけです。

 ……………………………………………………………………………………
  $ sudo apt-get install autossh    (Debian系の場合)
  $ sudo yum install autossh        (RedHat系の場合)
 ……………………………………………………………………………………

基本的には、sshコマンドと同じように引数を指定して実行します。

 ……………………………………………………………………………………
  $ autossh マシン名
  Password: (パスワードを入力)
  マシン$ 
 ……………………………………………………………………………………

こんな感じで、ssh コマンドと同じように使うことができます。
ここで、試しに、ログイン先の sshd を強制終了することでセッションを
切断してみましょう。すると、以下のように再接続されました。(ので、
またパスワードを聞かれています。)

 ……………………………………………………………………………………
  マシン$ ps -C sshd -f | grep ${SSH_TTY:5}
  usu       3860  3821  0 14:38 ?       00:00:00 sshd: usu@pts/4
  マシン$ kill 3860
  Connection to W.X.Y.Z closed by remote host.
  Connection to W.X.Y.Z closed.
  Password: 
 ……………………………………………………………………………………

SSH で常にポートフォワーディングしておきたいときなどに、autossh を
使えば便利ではないかと思います。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ おわりに

以上、SSH に関するコネタ集を、おおくりいたしました。

…はい、特にひねりはございませんでした。

が、世の中にはまだまだ、手を抜…もとい、便利にする小ネタが転がって
います。実際に己の手を動かして、実践しましょう。
先人たちに感謝しつつ、おおいに利用していきましょう。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 宿題の答え
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

前回の宿題は、

  Swatchをサービスとして起動してみましょう。

でした。

半年以上前の宿題なので、なかったことにしてしまいたいところですが、
必要とされている方がいるかもしれませんので、振り絞って回答します。

まずは、前回を思い出してください。(主に自分へ言い聞かせています。)

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Vol.271 - Swatch でログを監視する
http://www.usupi.org/sysad/271.html
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

たとえば、こういうのを、コマンドラインで実行していたとしましょう。

 ……………………………………………………………………………………
  $ sudo swatch -c /etc/swatch/invalid.conf -t /var/log/secure
 ……………………………………………………………………………………

これを、サービスにしてしまいます。
ここでは、systemd で実現したいと思います。

まず、「/etc/systemd/system/swatch.service」というファイルを作成し
ます。中身は、以下の通りです。

……………………………………………………………………………………
[Unit]
Description=Log file viewer with regexp matching, highlighting & hooks
After=rsyslog.service

[Service]
ExecStart=/usr/bin/swatch -c /etc/swatch/invalid.conf -t /var/log/secure

[Install]
WantedBy=multi-user.target
……………………………………………………………………………………

Ubuntu な方は、「/var/log/secure」を「/var/log/auth.log」に変えて
ください。

これが正しいかどうか、「systemctl」コマンドでサービスを起動したり
確認したりしてみましょう。まずは確認からです。

 ……………………………………………………………………………………
  $ systemctl status swatch
  ● swatch.service - Log file viewer with regexp matching, highlighting & hooks
     Loaded: loaded (/etc/systemd/system/swatch.service; disabled; vendor preset: 
     Active: inactive (dead)
 ……………………………………………………………………………………

ファイルを作っただけなので、まだ動いていません。
サービスを起動してみましょう。

 ……………………………………………………………………………………
  $ sudo systemctl start swatch
 ……………………………………………………………………………………

すると、動き出しました。

 ……………………………………………………………………………………
  $ systemctl status swatch
  ● swatch.service - Log file viewer with regexp matching, highlighting & hooks
     Loaded: loaded (/etc/systemd/system/swatch.service; disabled; vendor preset: 
     Active: active (running) since 水 2017-01-04 10:36:36 JST; 1s ago
   Main PID: 536 (swatch)
      Tasks: 3
     Memory: 22.8M
        CPU: 225ms
     CGroup: /system.slice/swatch.service
             ├─536 /usr/bin/perl /usr/bin/swatch -c /etc/swatch/invalid.conf
             ├─564 /usr/bin/perl /.swatch_script.536
             └─566 /usr/bin/tail -n 0 -F /var/log/auth.log
  ...
 ……………………………………………………………………………………

実際にログインに失敗するなどして、期待した動作になるか、確認をして
みてください。

なお、もしこのサービスを常時使いたいなら、以下を実行します。

 ……………………………………………………………………………………
  $ sudo systemctl enable swatch
  $ systemctl status swatch
  ● swatch.service - Log file viewer with regexp matching, highlighting & hooks
     Loaded: loaded (/etc/systemd/system/swatch.service; enabled; vendor preset: e
     Active: active (running) since 水 2017-01-04 10:36:36 JST; 52min ago
  ...
 ……………………………………………………………………………………

disabled が enabled に変わりました。次回システム起動時には、これが
自動起動されるようになります。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 今回の宿題
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

今回の宿題は、

  sshpass と autossh を組み合わせて使ってみましょう。

です。

公開鍵が使えないサーバでも autossh を使いたい、ということは、多少
なりともあるのではないでしょうか。

といいますか、今まさに自分が必要としているため、これから宿題をやる
つもりでおります。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ あとがき
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

年末に、会社のルータをリプレースしました。

いまどきのルータは、全ポートGbE、VPN、VRRP、SNMP、NAT、QoS、DHCP、
IPv6、RIP、OSPF、BGP4、RADIUSなど様々なプロトコルや機能に対応して
いるにもかかわらず、2万円台で買えてしまいます。すごいですね。

設定も、Webオンリーではなく、telnetやシリアルポートからコマンドを
叩けるので、遠隔での設定や確認が簡単に行えます。

マニュアルや設定集もWebで公開されており、いたれりつくせりです。
特に大きな問題もなく、さくっと移行できました。

ただ、年末の誰もいないときにリプレースしているため、仕事始めに問題
が頻発する可能性は、おおいにありえます。

明後日が仕事始めなので、そうならないことを祈りつつ、残り少ない休み
を満喫しようと思っているところです。

…まあ、表向きは休みですが、いろいろな遅れを取り戻すべく、こっそり
働いているのですが…。


今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、4月2日(日) の未明に発行したいと思います! (目標!!)


「いますぐ実践! Linux システム管理」はこちらです。
メルマガの解除、バックナンバーなども、以下からどうぞ。
http://www.usupi.org/sysad/    (まぐまぐ ID:149633)

その他、作者に関するページは、概ね以下にございます。
http://www.usupi.org/kuri/          (main)
http://usupi.seesaa.net/            (blog)
http://twitter.com/kuriking/        (twitter)
http://facebook.com/kuriking3       (facebook)
https://jp.pinterest.com/kuriking/  (pinterest)

ついでに読みたい

いますぐ実践! Linuxシステム管理

RSSを登録する
発行周期 月2回
最新号 2017/01/05
部数 2,822部

このメルマガを購読する

ついでに読みたい

今週のおすすめ!メルマガ3選

ダメおやじの全財産をかけた崖っぷちFX通信
【1日に数万人が熟読する人気FXブログのメルマガ版】 相場歴30年以上のダメおやじがFXノウハウを大公開! 毎朝配信!毎日の経済指標情報や攻略法を無料で解説しています。 ●損切りがうまくできない、利食いが浅い ●ポジポジ病(ポジションを不要に持ってしまう) ●コツコツドカーン(小さく勝っても大きく負ける) ●エントリータイミングわからない ●メンタル面が弱い このようなお悩みがあれば購読してみてください。 FX初心者から経験者まで、FXの悩みをこのメルマガで解消します。 期間限定でメルマガ内で数万円相当分のFX情報商材をプレゼント中!
  • メールアドレスを入力

  • 規約に同意して

まりりんのFXここだけの話
OLまりりんがFXでちゃっかり稼いでいる、ここだけのマル秘情報をメールでお届けします!誰でも簡単に稼げるトレンド情報や必殺テクニック等、ここでしか公開しないFX有益情報が盛り沢山です。スキマ時間にFXで稼ぎたい方必読です!
  • メールアドレスを入力

  • 規約に同意して

フリーランスでもラクラク年収1000万円
フリーランスの方向けに「年収1000万円を達成するための法則」を公開していきます。 ここだけの話ですが、40万円以上お支払いただいている講座で私がお伝えしている内容ばかりです。 2016年9月の時点で、この法則を学び、実践されている方のほぼ過半数が年収1000万円超えを果たし、受講生全員が年収アップを実現しています。 つまり、1000万円を稼ぐことや目標を達成することはスキルというわけです。 誰にでも可能な、再現性のあるスキルなのです。 ビジネス、マインドセット、マーケティング、健康、お金の事などについて詳しく、わかりやすくお伝えします。
  • メールアドレスを入力

  • 規約に同意して

今週のおすすめ!メルマガ3選

相馬一進の、好きなことを仕事にする「お金の心理学」
・天職で1億稼いだ相馬一進が、お金、自己啓発、仕事について、 心理学とマーケティングの側面から語る本格派メールマガジン。 ・著者の相馬一進は、ダライ・ラマ14世や、『7つの習慣』の スティーブン・コヴィーや、リチャード・ブランソンなどの、 海外セミナーへの日本人ツアーを企画、集客した実績を持つ。 ・最先端の起業・副業のノウハウや、マーケティングの原理原則、 生活の中からストレスを減らす方法、モチベーションの心理学、 複数の収入源を持つ方法、働く時間を減らす秘密などを配信中。
  • メールアドレスを入力

  • 規約に同意して

川島和正の日刊インターネットビジネスニュース
■読者数32万部超、日本一の個人メルマガ(まぐまぐ総合ランキング調べ) ■9年連続で年収1億円以上になり、70か国以上を旅行して、 190平方メートルの豪邸に住んで、スーパーカーに乗れるようになり、 さらに、著書は、日本を代表する超有名人2人に帯を書いてもらい、 累計50万部のベストセラーとなった、現在香港在住の川島和正が、 最新のビジネスノウハウ、自己啓発ノウハウ、健康ノウハウ、恋愛ノウハウ さらに「今チェックしておくべき情報リスト」などを配信中!
  • メールアドレスを入力

  • 規約に同意して

へなちょこ社長中松のだるだる日記
アフィリエイトとインフォビジネスで、年商1~2億円規模の会社を経営する中松のまぐまぐ殿堂入りメルマガです。アマゾンランキング1位獲得「レバレッジでさらに増える!副収入が月16万円入ってくるしくみ」の著者。中松に興味がある人しか読まないマニアックなメルマガなのであしからず。(旧メルマガ名:月100万稼ぐ脱サラアフィリエイターの本音)
  • メールアドレスを入力

  • 規約に同意して

他のメルマガを読む

ウィークリーランキング