【書評】OpenSSH[実践]入門:テレワーク時の仕事ハックのために
勤めている会社ネット環境がクソすぎてテレワークが許可されても全然仕事ができない状態だった。 sshのポートを許可してくれと懇願してそれだけはOKをもらった。 (それにしても、あれだけ敏感になっておいて22番ポートを開けるリテラシーのなさよ。)
んでsshが使える環境になったので、その範疇でやれることをやりたいと思って購入したのがsshの本である。
OpenSSH[実践]入門 (Software Design plus)
- 作者:川本 安武
- 発売日: 2014/11/01
- メディア: 単行本(ソフトカバー)
sshだけでこの分厚さは想像以上ではあったものの、sshに関する本はあまり出版されていなかったので選択肢はほぼなかった。 この本は評価もそこそこ高いし、「実践」「入門」というワードに釣られてしまった。
ネットである程度調べて実践していたが、それでも知らない点がたくさんあった。 そもそも、なんのために使うんだ?というような章もある。これは、結構な人数を管理するための機能なんだろうけど、自分の場合は数人レベルなので、今は関係ないとおもって斜め読みした。 単純に、sshでリモートログインして開発してますよ、という人は一度読んでおいて欲しい。 まじか、こういう使い方があるのか、など新たな発見は間違いなくある。 個人的にはGoogle Authenticatorをサポートしていることにびっくりした。
個人的付箋
ポートフォワードの追加と削除
エスケープキャラクタ(デフォルトはチルダ~)のあとにCを入力するとコマンドラインが開き、プロンプトがsshに変わる。 例えば、ヘルプを表示する。
$ ~C ←実際には~Cは表示されない ssh> help Commands: -L[bind_address:]port:host:hostport request local forward -R ・・・ ・・・
インターネットに接続できない環境のホストをアップデートする
ポートフォワードとtsockを組合せえれば、ネットワークから切り離されたOSをアップデートさせる経路を作れる。まず、リモートポートフォワードを有効にして接続し、隔離されたホストがクライアントのsshdに接続できるようにする。 10022はクライアントのsshdに繋がるポート。
[client]$ ssh -R 10022:localshot:22 remotehost
つぎにダイナミックポートフォワードを有効にし、クライアントをSOCKSのプロキシにする。
[remotehost]$ ssh -D 1080 -p 10022 localhost
tsocksはプロキシエンドで名前解決ができる。remotehostはクライアントをプロキシにしてインターネットを接続することが可能になる。
[remotehost]$ tsocks yum update
Match(条件分岐)
OpenSSH-6.5から、SSHクライアントのコンフィグファイル内でキーワードによる条件分岐ができるようになった。
Matchで使用できるキーワード
- exec
- host
- originalhost
- user
- localhost
execで展開されるトークン
- %L
- ローカルマシンのホスト名の最初のドットまで
- %l
- ローカルマシンのホスト名
- %h
- 接続するリモートマシンのホスト名
- %n
- コマンドラインから入力したホスト名
- %p
- 接続するリモートホストのポート番号
- %r
- リモートホストで認証するユーザ名
- %u
- ローカルマシンでsshを実行したユーザ名
設定例
Host web01 HostName 192.168.100.11 Host proxy-server ProxyCommand none Match exec "nmcli connection status id <ap-name> 2> /dev/null" proxyCommand ssh -W %h:%p proxy-server
%hを使用した設定例
Host web01 web02 mail01 mail02 db01 db02 HostName %h.localhost.localdmain
ローカルポートフォワードを複数設定する
複数行で記述可能
LocalForward localhost:8080 192.198.100.100:80 LocalForward localhost:9090 192.198.100.200:80
ProxyCommand
リモートホストへ接続するために使用するコマンドを指定する。 ProxyCommandで使えるトークンは下記。
- %h
- 接続するホスト名
- %p
- 接続するポート番号 *%r
- リモートのユーザ名
暗号方式による転送速度とCPU負荷の違い
書籍の一部を掲載。