Jump to content
Калькуляторы

Ссылки вида ssh:// в Windows и PuTTY

Доброго времени суток!

 

Захотелось нам в нашей внутренней системе мониторинга сделать ссылки сразу на открытие SSH к оборудованию.

Благо, механизм есть: создание ссылок со схемой ssh://... и telnet://...

 

На сайте PuTTY есть даже подробная инструкция, как браузер заставить эти ссылки отрабатывать: https://putty.org.ru/features/ssh-handler.html

Но, как ни странно, PuTTY, не смотря на наличие инструкции, не хочет брать в качестве параметра "ssh://...". Т.е. браузер, как путёвый, честно передаёт putty.exe аргумент %1. На что PuTTY говорит: "ssh unknown host".

 

В принципе, я догадаюсь, как решить проблему - скомпилить простенький экзешник, который распарсит URL в аргументы командной строки PuTTY и запилить его в HKEY_CLASSES_ROOT для обработки схемы ssh:.

Но это выглядит велосипедом. М.б. можно как-то составить REG файл таким образом, чтобы передать PuTTY нужные параметры или может есть готовый exe, котоые перепарсит url в командную строку putty?

Edited by M-a-x-Z

Share this post


Link to post
Share on other sites

Посмотрите Kitty (форк Putty), там из коробки заявляется:

putty.org.ru/features/ssh-handler.html

Обработчик протоколов: интеграция с браузером

 

Вы можете добавить новый обработчиков протоколов, чтобы ссылки вида ssh:// и telnet:// на веб–страницах стали открываться непосредственно в PuTTY.

 

Для этого вам необходимо выполнить команду из командной строки с правами администратора:

putty.exe -sshhandler

 

кроме того, ваш китти врет мухлюет.

Высота поля для работы со списком сохранённых сессий в PuTTY очень маленькая. Единовременно вы можете видеть только 6 сессий. В KiTTY по умолчанию высота этого поля увеличина до 21 строки.

у меня в putty высота поля ограничена высотой экрана.

и все остальные "отличительные достоинства" тоже присутствуют.

Share this post


Link to post
Share on other sites

putty.org.ru/features/ssh-handler.html

Это ровна та ссылка, про которую я спрашивал в заглавном посте)))

Самая свежая версия (0.68) PuTTY с этого сайта ругается на ключ -sshhandler и не обрабатывает ссылки при ручной правке реестра.

Это дополнительно ставит меня в тупик - почему функция документирована и не реализована.

Share this post


Link to post
Share on other sites

Открой исходники да посмотри, что как маленький хомяк спрашиваешь.

Ну хомяк - не хомяк, а анализировать исходники, да и ещё искать там для такого большого проекта ошибки - накладно по времени. Я ж не спрашивал, почему пуття не работает. Вопрос-то мой был ро опыт аналогичных проблем. Но видимо никто не сталкивался.

 

Поэтому пришлось за полчаса изобрести велосипед, который на всякий случай оставлю здесь:

C:\putty\putty.vbs

putty="C:\putty\putty.exe"

Dim WshShell
set WshShell = WScript.CreateObject("WScript.Shell")

Set objArgs = WScript.Arguments
For i = 0 to objArgs.Count - 1
    arg=objArgs(i)
    sch=InStr(1,arg,"://")		
    if sch>1 then
bs=InStr(sch+3,arg,"/")
if bs<sch then bs=Len(arg)+1
arg2=Mid(arg,sch+3,bs-sch-3)
dog=InStr(1,arg2,"@")
if dog>0 then
	username=Mid(arg2,1,dog-1)
	arg2=Mid(arg2,dog+1)
else
	username=""
end if
schema=LCase(Mid(arg,1,sch-1))

if schema="ssh" then
	if username<>"" then WshShell.Run putty+" -l "+username+" -ssh "+arg2 else WshShell.Run putty+" -ssh "+arg2
end if
if schema="telnet" then
	WshShell.Run putty+" -telnet "+arg2
end if
    else
MsgBox "Ты втираешь какую-то дичь"
    end if    
Next 

 

putty.reg:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\telnet]
@="URL:Telnet Protocol"
"EditFlags"=dword:00000002
"FriendlyTypeName"="@ieframe.dll,-907"
"URL Protocol"=""
"BrowserFlags"=dword:00000008

[HKEY_CLASSES_ROOT\telnet\DefaultIcon]
@="c:\\putty\\putty.exe,0"

[HKEY_CLASSES_ROOT\telnet\shell]
@=""

[HKEY_CLASSES_ROOT\telnet\shell\open]

[HKEY_CLASSES_ROOT\telnet\shell\open\command]
@="cscript \"c:\\putty\\putty_url.vbs\" %1"

[HKEY_CLASSES_ROOT\ssh]
@="URL:SSH Protocol"
"EditFlags"=dword:00000002
"FriendlyTypeName"="@ieframe.dll,-907"
"URL Protocol"=""
"BrowserFlags"=dword:00000008

[HKEY_CLASSES_ROOT\ssh\DefaultIcon]
@="c:\\putty\\putty.exe,0"

[HKEY_CLASSES_ROOT\ssh\shell]
@=""

[HKEY_CLASSES_ROOT\ssh\shell\open]

[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="cscript \"c:\\putty\\putty_url.vbs\" %1"

[HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\Sessions\Default%20Settings]
"Cipher"="aes,chacha20,blowfish,3des,des,WARN,arcfour"
"KEX"="ecdh,dh-gex-sha1,dh-group14-sha1,rsa,dh-group1-sha1,WARN"

Share this post


Link to post
Share on other sites

Открой исходники да посмотри, что как маленький хомяк спрашиваешь.

 

Там исходники,

На assembler и C.

Компилеровать кто будет,

ещё из под винды

 

А.С. Пушкин

Share this post


Link to post
Share on other sites

На assembler и C. Компилеровать кто будет,

Очевидно что достаточно найти main() и посмотреть что там с ком строкой делается.

Ассемблер поди только для сжатия и крипты.

Компелячить не надо.

Share this post


Link to post
Share on other sites

Если вы не меняли путь установки, то вот так. Если же вы меняли то открываете блокнот, кидаете туда скрипт, меняя то, что выделено чёрным на свой путь до Putty, потом сохраняете как

Имя файла: Имя файла.reg

Тип файла: Все файлы

Кодировка: UTF-8

Дальше сохранить, закрыть и заново запустить, согласить изменить реестр из не офц источников и всё.  

 

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\telnet]
@="URL:Telnet Protocol"
"EditFlags"=dword:00000002
"FriendlyTypeName"="@ieframe.dll,-907"
"URL Protocol"=""
"BrowserFlags"=dword:00000008

[HKEY_CLASSES_ROOT\telnet\DefaultIcon]
@="C:\putty\putty.exe,0"

[HKEY_CLASSES_ROOT\telnet\shell]
@=""

[HKEY_CLASSES_ROOT\telnet\shell\open]

[HKEY_CLASSES_ROOT\telnet\shell\open\command]
@="\"C:\putty\putty.exe" %1"

[HKEY_CLASSES_ROOT\ssh]
@="URL:SSH Protocol"
"EditFlags"=dword:00000002
"FriendlyTypeName"="@ieframe.dll,-907"
"URL Protocol"=""
"BrowserFlags"=dword:00000008

[HKEY_CLASSES_ROOT\ssh\DefaultIcon]
@="C:\putty\putty.exe,0"

[HKEY_CLASSES_ROOT\ssh\shell]
@=""

[HKEY_CLASSES_ROOT\ssh\shell\open]

[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="\"C:\putty\putty.exe" %1"


[HKEY_CLASSES_ROOT\putty]
@="URL:PuTTY Protocol"
"EditFlags"=dword:00000002
"FriendlyTypeName"="@ieframe.dll,-907"
"URL Protocol"=""
"BrowserFlags"=dword:00000008

[HKEY_CLASSES_ROOT\putty\DefaultIcon]
@="C:\putty\putty.exe,0"

[HKEY_CLASSES_ROOT\putty\shell]
@=""

[HKEY_CLASSES_ROOT\putty\shell\open]

[HKEY_CLASSES_ROOT\putty\shell\open\command]
@="\"C:\putty\putty.exe" -load \"%1\""

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.