web-dev-qa-db-ja.com

他のサーバーへの接続を確認する方法

2つのサーバー間の接続を確認したい(つまり、sshが成功するかどうか)。

主なアイデアは、中間サーバーのリストを使用して、server-aとserver-bの間の最短の方法を確認することです(たとえば、開発サーバーにいて、prodサーバーに接続したい場合-通常、直接sshは失敗します)。

これには時間がかかるため、SSHを使用しないことをお勧めします。接続できるかどうかを最初に確認し、接続できる場合はSSH経由で接続してみます。

アイデアを得るためのいくつかの可能なルート:

server-a -> server-b
server-a -> middle-server-1 -> server-b
server-a -> middle-server-6 -> server-b
server-a -> middle-server-3 -> middle-server-2 -> server-b

あなたが私が探しているものを理解してほしいですか?

6
Nir

サーバーの接続を確認するために、4つのツールを自由に使用できます。

  1. ping

    これにより、接続しようとしているサーバーのいずれかが確認されますが、たとえば、middle-server-1がserver-bに到達できるかどうかは確認できません。

    カウントスイッチ(-c)を使用して、pingが別のサーバーへのpingを試行する時間を制御できます。 1に制限すれば十分です。

    $ ping -c 1 skinner
    PING skinner (192.168.1.3) 56(84) bytes of data.
    64 bytes from skinner (192.168.1.3): icmp_req=1 ttl=64 time=5.94 ms
    
    --- skinner ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 5.946/5.946/5.946/0.000 ms
    

    この変数$?を使用して、このコマンドのステータスを確認できます。値が0の場合は成功で、それ以外は問題が発生しています。

    $ echo $?
    0
    
  2. traceroute

    接続を確認するために使用できる別のコマンドは、tracerouteです。

    $ traceroute skinner
    traceroute to skinner (192.168.1.3), 30 Hops max, 60 byte packets
    1  skinner (192.168.1.3)  0.867 ms  0.859 ms  0.929 ms
    

    このツールでも、あるサーバーから別のサーバーへの接続(pingと同じ問題)は表示されませんが、別のサーバーに到達するまでのネットワーク経由のパスが表示されます。

  3. ssh

    sshBatchModeで使用して、接続をテストできます。 BatchMode=yesを使用すると、ユーザー名/パスワードの使用を避け、公開鍵/秘密鍵のみを使用して、別のサーバーに接続しようとします。これにより、通常、処理速度が大幅に向上します。

    $ ssh -o "BatchMode=yes" skinner
    

    サーバーへの接続をチェックするラフな1つのライナーを作成できます。

    $ ssh -q -o "BatchMode=yes" skinner "echo 2>&1" && echo $Host SSH_OK || echo $Host SSH_NOK
    
    SSH_OK
    

    機能する場合はSSH_OKメッセージが表示され、失敗した場合はSSH_NOKメッセージが表示されます。

    この方法の代わりに、ConnectTimeoutオプションを含めることもできます。これにより、sshクライアントが長時間かかるのを防ぎます。通常、このようなものは許容されます、ConnectTimeout=5。例えば:

    $ ssh -o BatchMode=yes -o ConnectTimeout=5 skinner echo ok 2>&1
    ok
    

    失敗すると、次のようになります。

    $ ssh -o BatchMode=yes -o ConnectTimeout=5 mungr echo ok 2>&1
    ssh: connect to Host 192.168.1.2 port 22: No route to Host
    

    また、戻りステータスを設定します。

    $ echo $?
    255
    
  4. telnet

    このテストを使用すると、基本的なsshだけを使用して、別のサーバーでtelnetサーバーにアクセスできるかどうかを確認できます。

    $ echo quit | telnet skinner 22 2>/dev/null | grep Connected
    Connected to skinner.
    
13
slm

ncもポートに「ping」できます

nc -z hostname 22

これにより、マシンが通常のping(ICMP)に応答しないように構成されている場合でも、マシンのポート22にpingを実行できます

7
jet

または、ConnectTimeout=1などの設定オプションを設定して、SSH時間を短縮することもできます。 UseDNS=noは、逆引きDNSが正しく構成されていないシステムにも役立ちます。

0
chronospoon