HTML code to open PuTTY client from browser

2019-02-10 16:30发布

问题:

I am trying to make a webpage which will have the entire inventory of servers that our team manages in the form of a table. I am using a simple LAMP stack and the inventory input as a CSV file.

The table has three columns: Hostname, IP address and device serial number.

While this works perfectly fine, I want to take this a step further and make every IP address in the table a hyperlink, clicking which will open an SSH client, which will connect to that IP address. Any cues to how this can be done? I was hoping there would be something like the the mailto: tag which opens an email client (Outlook window).

回答1:

I've done it following the info of this blog post.

For future reference in case the original page becomes missing, here is the process:

  1. you cannot directly map the ssh:// scheme to PuTTY, but you can map it to an intermediary script which will in turn lanch PuTTY with the right arguments. Mine is called putty_ssh.bat and has the following content:

    @echo off
    set var=%1
    set extract=%var:~6,-1%
    "C:\Program Files (x86)\PuTTY\putty.exe" %extract%
    
  2. the script has to be registered in the registry. You can just create a ssh.reg file with the following content and open it (customizing last line as needed):

    REGEDIT4
    [HKEY_CLASSES_ROOT\ssh]
    @="URL:ssh Protocol"
    "URL Protocol"=""
    [HKEY_CLASSES_ROOT\ssh\shell]
    [HKEY_CLASSES_ROOT\ssh\shell\open]
    [HKEY_CLASSES_ROOT\ssh\shell\open\command]
    @="\"C:\\path\\to\\putty_ssh.bat\" %1"
    

When I click on ssh:// links in web pages, it now opens PuTTY.



回答2:

PuTTY unfortunately does not associate itself with the ssh:// or any other URLs.

You can associate an application with a protocol manually. But it's not trivial. For instructions, see below.

Easier way is to install WinSCP SFTP client. WinSCP 5.9 and newer registers itself to handle the ssh:// URL and opens the session specified by the URL in PuTTY.

So basically, if you just install WinSCP, it will make PuTTY handle the ssh:// URLs, without the below manual tweaks.

(I'm the author of WinSCP)


To register an application manually, see the MSDN article Registering an Application to a URI Scheme.

Basically you add a registry key like:

[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\""

Though the above passes a whole URL to the PuTTY command-line. And PuTTY does not understand the ssh:// prefix. So you would have to add a wrapper script that strips the ssh:// and passes only a user and a host to PuTTY.

For that see:
https://johnsofteng.wordpress.com/2009/05/12/launch-putty-from-browser/




标签: html putty