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), там из коробки заявляется:

-sshhandler: create protocols associations (telnet://, ssh://) for internet explorer

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

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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this