sshのちょっと高度な使い方

めっきり使う機会が減ってしまったtelnetの代わりによく使うssh。最近はmoshという新たなプロトコルも出てきましたが、まだまだsshがメジャーですよね。

今回は過去の記事を参照しつつsshのちょっと高度の使い方の紹介です。

まずは秘密鍵・公開鍵の使い方。秘密鍵にパスワードを設定しなければ、パスワードなしでログインするようにも可能です。

 

次は、ポートフォワーディング。ローカルのあるポートを、リモートのネットワークの特定のサーバのポートに転送することができます。ネットワークの制限上sshは通るがその他のポートは通信できなかったり、通信したいサーバがNATの中で、踏み台サーバ経由でしかアクセスできない場合に、ダイレクトに通信することができます。

以下は、ローカルのポート80にアクセスすると、abc.com 経由で、hoge.comの8080にアクセスすることができます。

# ssh -L 80:hoge.com:8080  abc.com

-L ではなくて、-R を使うと、リモート(abc.com)のポート80をhoge.comの8080にフォワーディングすることができます。

# ssh -R 80:hoge.com:8080 abc.com

ただし、デフォルトでは、abc.com 上のポート80はabc.com上からのアクセス(ローカルアクセス)しか許可されていないので、他のサーバからのアクセスも許可したい場合は、sshサーバ側の設定(sshd_config)で、GatewayPorts というオプションを有効にし、sshで接続する際に-g オプションをつける必要があるようです。

もっと汎用的にフォワーディングしたい場合は、ダイナミックフォワーディングという方法もあります。

 

次はエスケープキャラクタを使った、GatewayPortsh コマンド自体の制御。左の記事では、"~ ." で強制的にログアウトする方法を書いていますが、これ以外にもいろいろなコマンドがあります。~? でヘルプがみられますが、代表的なものとしては、以下のようなコマンドがあります。

~#  ---- ポートフォワーディングの情報を表示。
~^Z ---- バックグラウンドで実行させる (^ZはCtrl+Zの意味)。sshに戻りたい場合はfgを実行。
~C  ---- sshのコマンドラインを開く。動的にsshの設定(例えばフォワーディング)が変えられます。

次は、タイムアウト関連の設定変更です。デフォルトでは相手のサーバの応答がないと、ターミナルが固まってしまったりしますので、mazn はいつも以下のオプションを使っています。サーバーの生死確認を20秒毎に行い、6回応答がないと自動切断する設定です。(ちょっと記憶が曖昧)

# ssh -o ServerAliveInterval=20 -o ServerAliveCountMax=6

毎回指定するのは面倒なので、.bashrc にでも alias を書いておきましょう。

 

次はサーバの設定のTipsなのですが、接続時の応答が遅いことがあります。これは大抵がDNSを参照する設定になっているか、使わない認証関連の設定が有効になっているのが原因です。sshd_config の以下のパラメータをnoにして、sshサーバを再起動してみてください。

UseDNS no
GSSAPIAuthentication no

 

参考
http://www.slideshare.net/tohakushi/ssh-13118950

タイトルとURLをコピーしました