web-dev-qa-db-ja.com

SSH VPNの作成

したがって、sshを使用してssh User@PrivateIPと入力してサーバーに接続します。そのコードをVPNのように機能するコードに変換するにはどうすればよいでしょうか(たとえば、別の位置情報からgoogleを検索します)。参考:接続するとは、付属のVPNサーバーではなく、自分のコンピューターに接続することを意味します。

2
user913194

それは正確にはVPNではありませんが、ほとんどの場合十分です。動的ポート転送を使用してssh接続を作成し、socksプロキシを作成できます。

ssh -D 9050 user@sshserver -fTNC
  • -D [bind_address:]portローカルの「動的な」アプリケーションレベルのポート転送を指定します...このポートへの接続が確立されるたびに、接続は安全なチャネルを介して転送され、アプリケーションプロトコルを使用して接続先が決定されますリモートマシンから。現在、SOCKS4およびSOCKS5プロトコルがサポートされています...詳しくは man ssh をご覧ください。

  • オプション-fTNCは圧縮を有効にし、接続をバッ​​クグラウンドでプッシュします。

  • 必要に応じて、autosshの代わりに ssh を使用します。

  • さらに、次のようにcrontabエントリを作成できます。

    @reboot autossh -D 9050 user@sshserver -fTNC
    

あとは、アプリケーションにse localhost:9050 as socks proxyと指示する必要があります。このタスクに特化したリファレンスをいくつか紹介します。


VPNにより近いもう1つのソリューションは sshuttle で、sshでも機能します。その概要は次のとおりです。

sshuttle:トランスペアレントプロキシとVPNが出会い、sshと出会うところ

私の知る限り、sshuttleは次の一般的なケースを解決する唯一のプログラムです。

  • クライアントマシン(またはルーター)はLinux、FreeBSD、またはMacOSです。
  • Ssh経由でリモートネットワークにアクセスできます。
  • リモートネットワークでの管理者アクセス権は必要ありません。
  • リモートネットワークにはVPNがないか、愚かな/複雑なVPNプロトコル(IPsec、PPTPなど)しかありません。あるいは、あなたが管理者で、VPNツールのひどい状態に苛立っているだけかもしれません。
  • リモートネットワーク上のすべてのホスト/ポートごとにsshポートフォワードを作成する必要はありません。
  • Opensshのポート転送はランダムに遅いか、または愚かであるため、嫌いです。
  • Opensshサーバーではデフォルトで無効になっているため、opensshのPermitTunnel機能は使用できません。さらに、パフォーマンスがひどいTCP-over-TCPを実行します(以下を参照)。

これはUbuntuリポジトリで利用できるので、インストールして次のコマンドで調査を開始できます。

Sudo apt install sshuttle

非rootユーザーとしてvirtualenvにインストールすることもできます。インストールしたら se

 sshuttle --dns -r user@sshserver 0.0.0.0/0

このコマンドは、DNSクエリを含むすべてのトラフィックを転送し、接続先のサーバーのDNSサーバーを経由してプロキシされます。

2
pa4080