しかし、クイックサポートを開始することの利便性は印象的です。クライアントが小さなプログラムを起動し、電話と出来事の番号を指示すると、デスクトップが表示されます。 VPN、ポート転送、その他のプリセットはありません。 便利ですか?
VNCは無料のアナログとして非常に適しており、コールバック接続で十分に受け入れられますが、多くのクライアントがあり、複数のクライアントがしがみついているコンピューターの場合にのみ、同じ問題が始まります(さらに解決されますが)。 私はチームビューアーのアイデアが個人的に好きです。 そして、あなたがそれを好めば、あなたの実装をしてみませんか...
すぐに予約します。提案されたソリューションはまったく解決策ではなく、アイデアの実装は「試してみる」ために実行されましたが、その作業能力を証明し、時間の経過とともに改善と利便性を追加できます。
そのため、winvnc(tightvnc)をベースにして、それにリバースSSHトンネルを固定し、ポート番号などでクライアントを決定します。 以下が必要です。
OpenSSHサーバー(Linuxなど)、Webサーバー(私の場合はphpを使用)。
クライアントは、独自のwinvnc(キットからtightvnc-portableを取得しました)とPuttyパッケージのSSH plinkコンソールクライアントを使用します。
リモートサポートクライアントのアルファ版には余計なものはありません(また、余計なものもありません)。 サーバーは次のようになります。
- サーバーには、システムに入る権利はないが、逆トンネルを発生させる機能を備えた特定の権利を剥奪されたユーザーが存在する必要があります。 直接トンネルも制限する必要があります。
- サーバーは、何らかの方法で、特定の範囲のトンネル、アドレス、空きポートに関するデータをクライアントに伝える必要があります。
顧客の場合:
起動時に、クライアントはサーバーにトンネル情報を要求する必要があります。
定義済みの設定でwinvncを実行する
受信した設定でSSHトンネルを上げます。
続行:
私はapache2 + php + OpenSSHの実行の問題を掘り下げません。これはすべて既に存在すると仮定します。
vncユーザーを追加します。
$ sudo useradd -M -s /bin/false vnc
デフォルトのシェルをオーバーライドすることは必須です。そうしないと、スマートな誰かがサーバーにログインできます。
パスワードを割り当てます。
$ sudo passwd vnc
任意のパスワード、それはまだクリアのどこかにあります。
sshd_config(/ etc / ssh / sshd_config)で、オプションを追加して、すべてのネットワークインターフェイスでポートを開きます。
GatewayPorts=yes
これがないと、トンネルはアドレス127.0.0.1(サーバー側から)で開き、追加のシャーマニズムなしではリモートで使用できません。 OpenSSHを再起動します
$ sudo service ssh restart
plinkを実行し、報告する必要のあるマジックナンバーについてクライアントに通知するcmdスクリプトの形式でクライアントに設定を転送することが考えられていました。 これは、次の形式のPHPスクリプト(または便利なもの)によって行われます。
<?php $server = 'mysshserver.com'; // OpenSSH $user = 'vnc'; // $password= '123'; // $ssh_port=22; // SSH $vnc_port=11111; // VNC- $port_start = 40000; // $port_end = 50000; $ports = NULL; // $r = exec("netstat -lnt4 | tail -n +3 | awk 'BEGIN{FS=\"[: ]+\"}{print $5;}' | sort -n", $ports); // do { $port = rand($port_start, $port_end); if(!in_array($port, $ports)) break; } while (1); // cmd- header("Content-type: text/plain;"); echo "@echo off\r\n"; echo "title Port number is: $port\r\n"; echo "start /MIN cscript mb.vbs \"Port number is: $port\"\r\n"; echo "plink.exe -N -R $port:localhost:$vnc_port -P $ssh_port -pw $password -l $user -batch $server \r\n" ?>
ファイアウォールのアクセス許可を追加します。
# iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # vnc itpables -A OUTPUT -m owner --uid-owner `id -u vnc` -j REJECT # 40000-50000 itpables -A INPUT -p tcp --dport 40000:50000 -j ACCEPT ( -, SSH, HTTP -, ): itpables -P INPUT DROP itpables -A INPUT -p tcp —dport 22 -j ACCEPT itpables -A INPUT -p tcp —dport 80 -j ACCEPT
それでは、クライアント用のパッケージの作成を始めましょう。 以下が含まれます。
winvnc(再び、パッケージからtightVNCポータブルを取得しました)および必要なライブラリ
パテから点滅
Windows用のwget (バイナリと依存関係)
winvncのregファイルとplinkの設定。 後者は、レジストリに承認済みのSSHキーを本当に必要としているため、インタラクティブに追加しない方法はありません。
レジストリの大切な部分を取得するには、Puttyを実行してSSHサーバーにしがみつき、キーを受け入れてレジストリをエクスポートします。
reg export HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys keys.reg
winvnc設定でも同じことを行います。ベンチコンピューターで実行し、
設定した設定:
- [サーバー]タブのパスワードまたは空欄
- そこでポート番号を設定し、11111(PHPスクリプトのみで使用)を設定します。
- [管理]タブで、パスワードが空白の場合にループバック接続を有効にし、その使用を許可します。
- さて、HTTPサーバーをオフにしてください。この場合は使用されません。
適用、クローズ、エクスポート:
reg export HKEY_CURRENT_USER\Software\ORL\WinVNC3 winvnc.reg
指定されたテキストを含むメッセージボックスを表示するvbスクリプトを追加します。
mb.vbs:
Set objArgs = WScript.Arguments messageText = objArgs(0) MsgBox messageText
そして、すべてを接続する最も重要なスクリプト:
runme.cmd:
winvnc.exe -kill reg import host-key.reg reg import winvnc.reg start winvnc.exe -run wget http://mysshserver.com/script.php -O tunnel.cmd && tunnel.cmd winvnc.exe -kill
その中にwinvncをピン留めします(突然のすべてがすでに機能していますか?)、
レジストリの一部をインポートする、
winvncを実行します
スクリプトをダウンロードし、ダウンロードされている場合は実行します。
上記のすべてを1つのフォルダーに入れて、SFXアーカイブにパックし、解凍後にこのスクリプトを起動します。WinRARSFXの場合、次のようになります。
Silent=1 Path=%TEMP%\support SavePath Setup=%TEMP%\support\runme.cmd
そしてクライアントに与えることができます。 起動時に、アーカイブは静かに静かに解凍され、runme.cmdスクリプトが起動します。これにより、winvncの構成、plink、トンネル起動スクリプトのダウンロード、実行、およびクライアントへのポート番号の通知が行われます。
teamviewerの場合のように、クライアントはそれを報告し、接続できます(指定されたポート番号で既にSSHサーバーに)
その結果、次のことができます。
- クライアントはNATの背後に座ることができます
- VNC ViewerもNATの背後にある可能性があります
- クライアントに接続するために必要なのは、クライアントが指示するポート番号だけです。
将来の計画について:
- 重いwgetを削除し、通常はすべてのスクリプトをVBSに書き換えます
- 接続されたクライアントを追跡するためのWebベースのインターフェースを作成し、VNCファイルをダウンロードして迅速な接続を可能にします。
- 他に何?