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

いますぐ実践! 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/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://twitter.com/kuriking/ (twitter)
http://facebook.com/kuriking3 (facebook)
https://jp.pinterest.com/kuriking/ (pinterest)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本