
pbk ファイルとログイン/パスワードを使用して、ダイアログなしでサイレントに VPN 接続を行う必要があります。スクリプトを実行すると接続されます。また、ユーザーは手動で接続を作成すべきではなく、すべてプログラムで実行する必要があります。
まず、接続が機能しているかどうかを確認するために手動で接続を作成し、pbk ファイルを実行し、新しい接続ダイアログにログインとパスワードを入力して、接続ボタンをクリックしました。接続が正常に作成され、VPN が機能しました。
次に、接続を閉じて、cmd で次のコマンドを実行します。
rasdial "MyVPNName" "login" "password" /phonebook:"path\to\file.pbk"
VPN に正常に接続できました。すべてが期待どおりに動作し、満足しました。しかし、別の PC で同じコマンドを実行すると、703 エラーが発生しました。
The connection needs information from you, but the application does not allow user interaction.
ログインとパスワードが必要だと思います。コマンドラインのログインとパスワードは無視され、間違った資格情報で、または資格情報がなくても動作することに気づきました。rasphone.exe で接続を作成しようとしましたが、接続作成ダイアログが表示されます。そのダイアログで接続を作成すると、コマンドラインでログインとパスワードがなくても rasdial コマンドが動作します。システムが接続を保存し、保存された資格情報を使用して接続するようです。
しかし、それは私が必要としているものではありません。アプリケーションで 1 回のクリックで VPN 接続を確立する必要があります。そのアプリでは、rasdial.exe または別の組み込みユーティリティを実行することを計画しており、ユーザーにはアプリ以外のダイアログが表示されたり、ログイン / パスワードを手動で入力したりしてはいけません。
私は持っているプレビューユーザーパスワード=0ここで言及されているようにpbkファイル内Windows 10 でワンクリックで VPN に接続しかし、それは役に立ちません。とにかくダイアログが表示されます。
あるいは、ログインとパスワードを pbk ファイルに設定できるでしょうか? 可能ですか?
答え1
rasdial vpnname
MS Windows 10、19XX、20H1、20H2 では問題なく動作しましたが、21H1 にアップグレードすると、証明書ベースの認証を使用する VPN 構成や保存された資格情報を使用する VPN 構成では動作しなくなりました。
生成されたエラーは次のとおりです:
リモート アクセス エラー 703 - 接続にはユーザーからの情報が必要ですが、アプリケーションはユーザーの操作を許可していません。
rasdial
使用する構成を指定した後、「ユーザー名」と「パスワード」という 2 つの追加引数が必要になったようです。
パスワードの代わりに「 * 」を使用すると、パスワードの入力を求めるプロンプトが表示されます。ユーザー名とパスワードの両方を入力するには、「 * * 」を使用します。
ただし、構成に資格情報を保存している場合、または証明書ベースの認証を使用している場合は、これらは実際には必要ありません。
代わりに、引数 " '' '' " (二重引用符は使用せず、ユーザー名の場合は 2 つの一重引用符を連続して '' とし、その後に空白文字を置き、さらに 2 つの一重引用符を連続して '' としてパスワードに渡します) を渡すこともできます。
rasdial vpnname '' ''
ユーザー名パスワードに「」を渡すことを検討し、発生した問題を回避できるかどうかを確認してください。
2) Windows から接続する IPSec トンネル サービスとして strongswan を使用する場合、MS Windows の「ユーザー名とパスワードの保存」が機能しない「バグ」があります。この Windows/strongswan の問題を回避するには、strongswan 構成を変更すると機能します。 https://serverfault.com/questions/908098/strongswan-clients-access-rights/9081
3) IPSec トンネルを想定しています... PowerShell を使用して VPN の「接続」を作成すると、資格情報を保存するために必要なすべての機能がサポートされているようです。そのため、「rasdial」をスクリプト化して、指定された VPN が実行中かどうかを確認し、実行されていない場合はプロンプトを表示せずに起動できます。このスクリプト化されたプロセスは Windows 10 21H1 より前では機能していましたが、上記の rasdial への変更が必要でした。
唯一の注意点は、ユーザーが初めて接続するときに資格情報を指定する必要がありますが、成功すると資格情報の入力は求められなくなります。その後は、スクリプトを使用して rasdial を呼び出して VPN を開始できます。
PowerShellでVPN「接続」を作成する場合、/phonebook:\path\to\pbkを指定する必要はありません。
IKEv2 およびその他の前提条件を想定し、必要に応じて変更して、rasdial で使用できる VPN「接続」を作成する PowerShell の例: (PowerShell の例)
Add-VpnConnection -Name "your-vpn-connection-name" -ServerAddress "fqdn.example.com" -TunnelType "IKEv2" -RememberCredential -AuthenticationMethod Eap -EncryptionLevel "Maximum";
次に、さらに機能を追加します。
Set-VpnConnection -Name "your-vpn-connection-name" -ServerAddress "fqdn.example.com" -SplitTunneling $False -RememberCredential $True -TunnelType "IKEv2" -AuthenticationMethod Eap -UseWinlogonCredential $False -EncryptionLevel "Maximum";
その後、PowerShell の「Set-VpnConnectionIPsecConfiguration」を使用して、使用する暗号、使用するハッシュ、およびより高度な機能などを設定できます。
4) 名前付き VPN「接続」を確立すると、次のことが可能になります。
(ユーザー名/パスワード引数を必要としない古い rasdial の場合:)
rasdial your-vpn-connection-name
(システムに保存した、または保存する予定のユーザー名とパスワードを必要とする新しい rasdial:)
rasdial your-vpn-connection-name '' ''
これが役に立つことを願っています。幸運を祈ります!