外部からSSH経由でUbuntuサーバーに接続する


25

Ubuntu Server 12.04(Precise Pangolin)を最近インストールしましたが、主にファイルサーバーとして使用する予定です。私はLinuxを初めて使用するので、これは非常に大きな学習曲線です。昨日、デスクトップからUbuntu Serverを管理できるように、SSHキーペアを使用してWindows 7マシンでPuTTYを構成できました。両方のマシンが同じネットワーク上にある場合、これは正常に機能します。

私のラップトップ(MacBook Air)の場合、常に同じネットワーク上にあるとは限りません。別のネットワーク上にある場合、SSHを介してラップトップからUbuntuサーバーに接続することは可能ですか?

サーバーのホスト名がLAN上でブロードキャストされるようにavahiデーモンをインストールし、ルーターが常に同じIPアドレスをサーバーに割り当てるようにルーターを構成しました。それとは別に、サーバーにインストールしたのはOpenSSHのみで、パスワード認証を無効にしているため、キーペアを使用してのみ接続できます。

私はラップトップの端末から次のようなことができると思った。

ssh my.external.ip.address user@hostname.local

そのコマンドを試みると、エラーが発生します。

ssh:ホストmy.external.ip.addressに接続ポート22:操作がタイムアウトしました

私も試しました

ssh my.external.ip.address user@servers.local.ip.address

以前と同じエラーメッセージが表示されます。だからそれは私がやろうとしていることのアイデアをあなたに与えるはずですが、これは可能ですか、もしそうなら、どうすればいいですか?

ラップトップからsshを介して外部接続をセットアップできると仮定すると、ISPが外部IPアドレスを変更し、外部接続が切断される可能性があります。つまり、ISPが外部IPアドレスを変更しても、新しい外部IPアドレスを知らなくてもサーバーにリモートで接続できます。

回答:


23

まず、正しいコマンドは次のとおりです。 ssh user@my.external.ip.address

また、SSHポート22をサーバーのローカルIPアドレスに転送するようにルーターを構成する必要があります。

さらにデバッグするには:

1)サーバーとルーターでポート22(SSH)が開いていることを確認します(ポート転送)。

2)SSHサーバーがサーバーで実行されていることを確認します

3)接続中にを使用してping、接続に関するその他の問題をデバッグします。ssh -v/var/log/auth.log

1)ルーターで:ルーター固有の指示に従います

サーバー上:(sudo ufw status別のファイアウォール構成ユーティリティを使用する場合を除く)またはsudo iptables -L(一般的な方法、ただし複雑な出力)

ポート22を開くには: sudo ufw allow 22

cf https://help.ubuntu.com/12.04/serverguide/firewall.html

2)インストールされていることを確認します。 dpkg -l openssh-server

実行されていることを確認します:service ssh statusまたはps aux | grep sshd

3)接続クライアントで:

  • ping my.external.ip.address
  • ssh -v user@my.external.ip.address

サーバー上:

  • sudo less /var/log/auth.log

必要に応じて、ルーターのログも確認できます。

オンラインポートスキャナーは次のとおりです。https//www.grc.com/x/ne.dll?bh0bkyd2

nmapなどのツールも使用できると思いますが、私はまだそれらに精通していません。

変化する外部IPアドレスへの対処:

1)dynDNSまたは同様のアカウントを取得します:http ://dyn.com/dns/

ダイナミックDNSプロバイダーのリスト:

2)別の解決策は、crontabジョブを設定することです。これは、定期的に外部IPアドレスをメールで送信するか、dropboxなどのオンラインストレージサービスに投入します。

私の友人が使用しているスクリプトは次のとおりです。

    #!/bin/bash
    # Bash script to get the external IP address
    MYWANIP=$(curl http://mire.ipadsl.net | sed -nr -e 's|^.*<span class="ip">([0-9.]+)</span>.*$|\1| p')
    echo "My IP address is: $MYWANIP"

    IPold=$(cat /home/USER/Dropbox/test.txt)
    echo "Previous IP Address: $IPold"

    if [[ $IPold != $MYWANIP ]] ;
    then
      echo "New IP"
      rm /home/USER/Dropbox/test.txt
      echo $MYWANIP >> /home/USER/Dropbox/test.txt;
      echo $MYWANIP;
    else
      echo "Same IP";
    fi

    # example crontab entry:
    ## m h  dom mon dow   command
    ## */10 * * * * /home/USER/Dropbox/test_ip.sh

ルーターのポート転送:

1)まず、次を実行して、ルーターのローカルIPアドレスを見つけます。

ip route | grep default

通常、192.168.xxのようなものです

別の方法と他のOSソリューション:

2)ルーターにローカルに接続されているコンピューターを使用して、以前に見つかったIPにアクセスします。たとえば、http://192.168.1.1を使用します。これにより、ルーター構成インターフェイスが表示されます。

3)次の手順は、ルーターによって異なります。たとえば、OpenWRTを使用したルーターでの方法は次のとおりです。

https://newspaint.wordpress.com/2012/08/26/how-to-add-a-port-forward-using-the-web-interface-on-openwrt-10-03-1/


これをありがとう、私は今提案を実行します。
-Aesir

ルーターのポート22をサーバーに転送するだけで十分でした。外部IPアドレスが変更される可能性があるという事実に関する質問の2番目の部分を解決する方法はありますか?-あなたの編集を見たばかりで、今すぐ読み上げます。
-Aesir

ルーターのポート22をサーバーに転送する方法を教えてください。どういう意味ですか?ありがとうございました!
xxx222

使用しているルーターによって異なりますが、通常はポート転送またはファイアウォール設定ページがどこかにあるはずです。OpenWRTを使用したルーターでの方法は次のとおりです。ルーターと同じネットワーク。
KIAaze

3

Ubuntu(デスクトップ)のデフォルトでは、SSHはインストールされていません。

ターミナルで次のコマンドを使用してインストールできます。

sudo apt-get install openssh-server

サービスをインストールしてすぐに開始する必要があります。


2
+1。私はそれを試してみたとき、これはうまくいきました。そのコマンドを実行した直後にUbuntuマシンにsshすることができました(Ubuntu 14.04(Trusty Tahr)、64ビットデスクトップ版)。
ピーターモーテンセン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.