web-dev-qa-db-ja.com

ホームコンピューターへのSSH

SSHとVNCを使用して学校からアクセスしたい自宅に複数のマシンがあります。そのために、静的IPを提供しました。

  • 192.168.1.50:Windows
  • 192.168.1.51:Ubuntu
  • 192.168.1.52:Raspberry Pi/Raspbian

SSHはポート22を使用することを知っているため、このポートをルーターの192.168.1.51:22に転送できますが、この方法ではRaspberry PiにSSHで接続できません。両方のマシンにアクセスできるように設定する方法はありますか?

21
acourchesne

IPv6があれば、ポートフォワーディングさえ必要ありません!永続的なIPv6アドレスを取得し(MACアドレスに基づいているため、ISPがIPv6の仕組みを知らない限り同じままであることが保証されています)、これを使用してトンネリングします。IPv6アドレスは公開されており、ローカルNATを経由せずにアクセスするために、どこでもポート転送を有効にする必要はありません。それは「うまくいく」。

ただし、IPv6はまだグローバルにサポートされていないため、ホームインターネット接続とリモートインターネット接続の両方で完全に機能するIPv6が必要です。

ただし、ほとんどの人がIPv4のみを使用している場合は、まだ方法があります!一部のルーターでは、次のように特定の送信元ポートを特定の宛先ポートに転送できます。

enter image description here

この例では、ポート22はマシンsheepdogに直接渡され、ポート292coyoteのポート22に転送されます。

最後に、ルーターにこの機能がない場合は、ポートを変更できます。SSHはポート22での実行に限定されないためです。任意の値に設定できます(使用されていません)。

/etc/ssh/sshd_config(編集するにはルートが必要なので、Sudo nano /etc/ssh/sshd_config)には、ファイルの先頭に次の行があります。

# What ports, IPs and protocols we listen for
Port 22

これを必要なものに変更します。

# What ports, IPs and protocols we listen for
Port 2992

Sudo service ssh restartを使用してSSHサーバーを再起動し、ルーターのポートを転送します。


ただし、このユースケースでは、SSHトンネルが適切かどうかを検討します。おそらく、ホームネットワークに専用のVPNサーバーをセットアップする必要がありますか?これにより、VPNに必要な適切なセキュリティ資格情報があれば、どこからでもentireホームネットワークにアクセスできます。さらに、VPNを使用するとオーバーヘッドがわずかに少なくなります。通常、1台のマシンに対して1つのポートのみを転送する必要があります。

32
Kaz Wolfe

この問題を解決する簡単な方法は、ルーターのさまざまなポートをマシンのポート22にマップすることです。たとえば、ルーターで次の設定を行うことができます(ルーターにIP 1.2.3.4があると仮定)

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

次に、sshを使用するときに、使用するポートを指定します。

$ ssh <username>@<router ip> -p <your port>

これで、すべてのマシンに接続できるはずです。

19
Liu Siyuan

コンピューターの1つが常に稼働していることがわかっている場合は、それをsshプロキシーとして使用することもできます。

外部IPアドレス(つまり、myhome.dyndns.comなど)のドメイン名を設定しているとします。1台のコンピューターに接続するだけです(raspberryが常に起動している場合、ルーターからポートを転送します)それ)、あなたのssh接続は次のようになります:

学校->(ここではルーター、透明)->ラズベリー-> ubuntuまたはwindows

次に、学校の〜/ .ssh/configに次の行を追加します。

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %[email protected]

次に接続するには:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh myuser@ubuntu (login without password)

これから、ssh ubuntuと入力すると、コンピューターは最初にラズベリーに接続し、次にubuntuコンピューターへのsshセッションを開始します。

転送するポートに関係なく、/ etc/sshd.confのパスワードを無効にして、sshキーを介したログインのみを許可することをお勧めします。このように、パラメータ 'ForwardAgent'を使用してraspberryおよびubuntuでキーをセットアップする場合、キーをロック解除するだけでよく、接続にパスワードは必要ありません。この方法では、ボットがsshにログインしようとしても、パスワードログオンを許可しないため、ボットはログインできません。

ボーナス、これはscpでも機能します。scpfoo ubuntu:/ tmp/fooは、追加のパラメーターなしで同じセットアップを使用します。ボーナス2、このセットアップは自宅で変更する必要はありません。明日あなたと別のコンピューターがssh configでコードをコピー/貼り付け、ホストとIPを変更するだけで、ルーターで新しいポートを開く必要はありません

11
potens

私はこれを実行します-実行するのが最も安価であるため、常にrpiをそのままにしてルーターに直接接続し、sshに入れて、それから他のユーザーにバウンスします-それはあまり注意を必要としません。

VNC/RDPでsshパイプを介してGUIを実行したり、ちょっとした楽しみをしたり、プライベートに保ちながらデスクトップコンピューター上のサーバーを参照できるポートを転送したりすることもできます。

この回答を追加した理由は、いくつかの提案をすることです。

1)22以外のポートを使用します。PIには22のままにしておきますが、ルーターの着信ポートを10,000を超える値に変更します。そうしないと、1日に数十から数百の攻撃を受けます。悪用が発見された2番目に、あなたが所有しているSSHホストを実行していることが知られています。

2)ユーザー名/パスワードの代わりに証明書を使用する-ユーザー名/パスワードのログインを完全に無効にします。

3)IPアドレスを変更できる場合は、dyndnsタイプのサービスを使用してDNSホストハムを取得します(noipを使用します。無料で、LinuxクライアントをサポートしてIPアドレスを更新します。パイ今)。これを無料で提供している会社はまだいくつかあります。

4)pi(またはsshを使用するもの)を最新の状態に保ちます(Sudo apt-get update)。私はsshが今ではかなりよく吟味されていると信じていますが、httpsのことも信じていました...

4
Bill K

これが答えとしてではなくコメントとしての方が適切かどうか疑問に思っていましたが、とにかくここに投稿します。

これを行う前に考えるべきいくつかのこと:

  1. システムをインターネットに公開するので、パッチが適切に適用され、セキュリティ構成が強化されていることを確認してください(たとえば、rootログインを許可せず、パスワードの代わりにpubkeysを使用します)。
  2. パブリックIP(whatismyip.comを参照)は変更される可能性がありますが、ISPによっては毎日変更される場合もほとんどない場合もあります。これは、パブリックIPを把握する方法を見つける必要があることを意味します。自宅のネットワークからwhatismyip.comに毎日アクセスしたり、アプリを作成したり、ダイナミックDNS(DynDNS)を使用して、変化するパブリックIPを静的ドメイン名にマッピングしたりできます。
  3. IPv6を使用してIPv4およびNATに関連するすべての手間をバイパスする場合は、デバイス、ルーター、ISPなどもIPv6と通信する必要があります。 ISPがIPv6をサポートしていない場合に役立つサービスがいくつかありますが、デバイスとルーターはいずれにしてもIPv6を使用する必要があります。
  4. インターネットに開くポートとデバイスが多いほど、攻撃領域が大きくなります。ネットワークでジャンプボックスを使用し、インターネットからそのデバイスへのSSHアクセスのみを許可することをお勧めします。ジャンプボックスは基本的に、ルーターを介してインターネットにポートフォワードする非常に強化されたシステムです。そのボックスに接続すると、それを介して内部ネットワークにSSH接続できるようになります。基本的に、ジャンプボックスは別のRaspberry Piになります。専用のデバイスを使用して、可能な限りそれを強化できるようにすることをお勧めします(とりわけ、できるだけ少ないサービスを実行することで)。
  5. (4a)ジャンプボックスをSSHで接続する代わりに、学校のデバイスからホームネットワークを閲覧できるVPNサーバーをセットアップすることもできます(発信VPN接続が許可されている場合)。
3
BlueCacti