web-dev-qa-db-ja.com

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

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

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

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

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

ssh my.external.ip.address [email protected]

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

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

私も試しました

ssh my.external.ip.address [email protected]

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

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

25
Aesir

まず、正しいコマンドは次のとおりです。ssh [email protected]

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

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

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

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

3)接続中にpingssh -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)接続クライアントで:

サーバー上:

  • 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.x.xのようなものです。

別の方法と他の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/

23
KIAaze

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

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

Sudo apt-get install openssh-server

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

3
kenorb