回答:
残念ながら、PuTTY は自身を関連付けません。をssh://
URLに。
アプリケーションをプロトコルに手動で関連付けることができます。MSDNの記事「アプリケーションをURIスキームに登録する」を参照してください。
基本的に、次のようなレジストリキーを追加します。
[HKEY_CLASSES_ROOT\ssh]
@="URL: SSH Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\ssh\DefaultIcon]
@="\"C:\\Program Files (x86)\\PuTTY\\PuTTY.exe\",0"
[HKEY_CLASSES_ROOT\ssh\shell]
[HKEY_CLASSES_ROOT\ssh\shell\open]
[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="\"C:\\Program Files (x86)\\PuTTY\\PuTTY.exe\""
上記はURL全体をPuTTYコマンドラインに渡しますが。また、PuTTYはssh://
プレフィックスを理解しません。したがってssh://
、ユーザーとホストのみを削除してPuTTYに渡すラッパースクリプトを追加する必要があります。
それについては、https://johnsofteng.wordpress.com/2009/05/12/launch-putty-from-browser/を参照してください。
別の方法は、WinSCPを使用することです。これは、処理するために自分自身を登録ssh://
URLをとPuTTYのではURLで指定されたセッションを開きます。
(私はWinSCPの著者です)
これを参照してください:https : //gist.github.com/sbiffi/11256316
パテを変更する必要のないソリューションが必要でした。
Visual Basicスクリプトをssh://およびtelnet:// URLに関連付けます。これは、URLを解析し、putty.exe -ssh -l loginなどの標準パラメーターを使用してputtyを起動します。
2つの追加の利点:–パスワードはURLで自動認証にも渡すことができます–パテを変更する必要がないため、すべてのパッチに適合します。
PuTTYに直接渡すことができるように、PuTTYに渡す前にURIからssh://および末尾(実際にはすべて)/を削除するレジストリクラスを次に示します。
ユーザーごと:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\ssh]
@="URL:ssh Protocol"
"URL Protocol"="ssh://"
[HKEY_CURRENT_USER\Software\Classes\ssh\shell]
[HKEY_CURRENT_USER\Software\Classes\ssh\shell\open]
[HKEY_CURRENT_USER\Software\Classes\ssh\shell\open\command]
@="cmd /V:ON /c set params=%1 && set params=!params:ssh://=! && start \"PuTTY\" \"c:\\Program Files (x86)\\PuTTY\\putty.exe\" \"!params:/=!\""
そして、システム上の全員のために:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ssh]
@="URL:ssh Protocol"
"URL Protocol"="ssh://"
[HKEY_CLASSES_ROOT\ssh\shell]
[HKEY_CLASSES_ROOT\ssh\shell\open]
[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="cmd /V:ON /c set params=%1 && set params=!params:ssh://=! && start \"PuTTY\" \"c:\\Program Files (x86)\\PuTTY\\putty.exe\" \"!params:/=!\""
必要に応じてファイルパスを変更します。
/ V:ONは 'SetLocal EnableDelayedExpansion'と同じです
/ cはコマンドを実行します
paramsを 'ssh://domain.tld/'であるパラメーターに設定します。次に、 '!params:ssh:// =!'を使用して 'ssh://'を削除します。これは、変数paramsの 'ssh://'から ''へのfind-replaceです。これをparamsに割り当てます。今はparams = 'domain.tld /'です。次に、それをputtyに渡し、別のfind-replaceを実行して、 '/'を ''に置き換えて、Windowsが置く末尾のスラッシュを削除し、PuTTYが使用できる 'domain.tld'を残します。
これにより、レジストリエントリに入力されたコマンドですべてを処理できます。何らかのサニタイズは一切行わず、簡単に悪用されます(例:ssh:// && notepadはメモ帳を開きます)。したがって、URIを自分だけが知っているものに変更することもできます。
PowerShell
コマンドを使用してレジストリキーだけでそれを行う方法を見つけました。どうぞ。