ひさびさに技術系の記事をば。備忘録ですが。
過去、SSHサーバ接続で遅い時、という状況に何度も遭遇しているにも関わらず、色々忘れるのでメモ。
※SCPなど、内部でSSH通信を利用しているツールも遅くなります。
SSH接続が遅い、
という状況にはいくつかパターンがあります。
SSH接続は以下の手順で接続するとして、
1.コマンドを入力 「ssh -p ポート ユーザ@ホスト」など
↓・・・ケースA
2.パスワードを入力
↓・・・ケースB
3.接続完了。→SSHを利用した遠隔操作・・・ケースC
上記手順中のケースA~ケースCのどこが遅いかで原因が異なります。
まずケースA、
接続コマンド実行後、パスワードを求められるまでに時間がかかる、場合。
サーバ側のSSH設定を調整すると改善する場合があります。
(クライアント側が原因のときもありますが、考え方は同じで大丈夫だと思います)
詳細は ssh -v などのデバッグトレースモードにて途中経過を画面出力しつつ、
原因を探って下さい。
その中でよくある2点について、記録しておきます。
・DNSを利用したサーバ認証をしているが、タイムアウト
ローカルネットワークにて、ipアドレスで直接通信している場合などに多いと思います
→ ・sshd設定(例:/etc/ssh/sshd_conf)に、「UseDNS no」を追記
※すでに「UseDNS yes」が記述されていれば、コメントアウトする(「#UseDNS yes」)
・名前解決できるように、hostsファイル(/ets/hosts)やDNSに、接続先のIPを登録する
※例えば、192.168.1.123 へ接続しようとしている場合、「192.168.1.123 dummy.com」などてきとうな名前をつけてしまえばOK
・GSSAPI認証を利用しているが、タイムアウト
セキュリティ的に問題がなければ(ローカル環境や仮想環境なら問題ないと思われるが)、GSSAPI認証をOFFにすればよい
→・sshd設定(例:/etc/ssh/sshd_conf)に、「GSSAPIAuthentication no」を追記
※すでに「GSSAPIAuthentication yes」が記述されていれば、コメントアウトする(「#GSSAPIAuthentication yes」)
・・・思い出したのでもう1つ。
IPv6を無理矢理利用してて遅い事もあった気がします。
この場合、network設定でIPv6を利用しない設定(無効にする設定)にするか、
sshd設定にて「AddressFamily any」となっている所を「AddressFamily inet」とするとOKです。
Ubuntu12.04とかでサーバをつくると、SSHの初期設定で上記認証を利用する設定になっているみたいですね。
ケースB、
パスワード入力後、SSH接続の確立までが遅い場合。
・・・なんか経験はある気がするのですが、、、忘れましたw^^;;;;;;
思い出したら追記しますorz
ケースC、
接続後の遠隔操作にて、レスポンスやコマンドの送信が遅い場合、全体的に遅い場合が多く、ネットワーク全体の通信環境(速度、遅延時間)が悪い場合が多いです。
ネットワーク管理者に相談、といった所ですね。
pingやnmapなどの通信応答チェックでネットワークを調査してくださいませ。
以上でっす。
クライアント側のSSH_confでも、GSSAPI認証の設定などあるかもしれません。
もしサーバ側を調整しても改善しなければ、クライアントも調整してみてくださいませ。