当前位置:首页 > 代码 > 正文

putty源代码(putty源码解析)[20240430更新]

admin 发布:2024-04-30 15:47 136


本篇文章给大家谈谈putty源代码,以及putty源码解析对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

putty是什么意思?

putty简介- -

本文结合ssh的几种常用功能介绍putty的使用

ssh是我最常用的远程连接协议,因为ssh本身连接使用加密的数据隧道,即便有人监听,也无法获得我们所在通讯的内容。ssh协议包括一个服务器端和客户端。一般来说,现在的Linux都带有open ssh,可以通过下面的命令看看是不是启用了sshd:

ps -ef | grep sshd

如果没有启用可以在/etc/init.d里面找到启用,没有安装就自己装装吧。或者RH系列有

/sbin/service sshd start

好了,我们看看ssh有什么其他的优点吧 :)

可以担当ftp数据传输功能

可以完美的转发X数据流

可以套接在其他的协议之上,从而为其他的加密

说了这么多,我们还是操作一下。使用ssh可以避免使用密码,虽然我们可以记住自己的密码,同时把登录密码设得很长,达到一定的安全性。但是有了ssh我们还可以选择保管自己的密钥,而不是记住自己的密码,或者记一个短一些的密码。putty里面为这个功能提供的产生密钥的工具是 puttygen.exe,对应命令ssh-keygen,可以生成DSA和RSA密钥,这个自己选择好了。产生密钥之后可以附加一个使用密钥的密码,如果不要,那就自己保管好自己的私钥了。putty产生的密钥有个小毛病,就是没有用户名,而ssh-keygen可以产生相应用户名,这使得putty不得不让我们多输入一行字——自己的用户名。

产生的密钥是一对,公钥和私钥。公钥可以上传到远端服务器上面,如openssh是在~/.ssh/authorized_keys,append到文件最后即可生效,而私钥就是通信的时候自己持有的密钥了。所以私钥一定要自己保管好,putty保存的是*.ppk文件,openssh是不需要后缀的,一般默认的是什么id_rsa和id_rsa.pub,注意rsa换成dsa即为DSA的密钥。

下一步使用ssh连接,如果没有其它要求,可使用putty界面设置好连接的对象,使用自己的私钥即可(此时可以保存成一个session,供以后使用),具体操作为:

Connection - SSH - Auth - Private Key File for Authorization

但是如果希望通过ssh转发X数据,使用图形化程序,那么就得打开X forwarding,这是在

Connection - SSH - Tunnel - Enable X11 Forwarding

使用openssh的资源实现更简单,ssh -X和-x管理开关,-l选择登录身份(默认是自己的用户名),适用自己产生的默认的密钥。

当然要能显示GUI还需要本地有一个X server,你可以使用Windows里面的Cygwin/X,基本安装下来100Mb不到(包括一个基本的win32的linux环境),如果想选用商业的,x-win32比较小巧,exceed功能比较全面。然后把本地localhost加入到xhost里面即可。

我们再说数据传输,这类似于ftp,但是信道是加密的,openssh里面提供的命令为scp src dst,注意对方必须有ssh服务开启,putty提供的等价命令是pscp,但是由于putty没有相应的配置,所以必须使用-l声明身份,-i声明密钥(私钥)的路径。

putty是什么

PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。

较早的版本仅支持Windows平台,在最近的版本中开始支持各类Unix平台,并打算移植至MacOSX上。除了官方版本外,有许多第三方的团体或个人将PuTTY移植到其他平台上,像是以Symbian为基础的移动电话。PuTTY为一开放源代码软件,主要由SimonTatham维护,使用MITlicence授权。随着Linux在服务器端应用的普及,Linux系统管理越来越依赖于远程。在各种远程登录工具中,Putty是出色的工具之一。Putty是一个免费的、Windowsx86平台下的Telnet、SSH和rlogin客户端,但是功能丝毫不逊色于商业的Telnet类工具。

putty能装在linux环境下吗

putty开始的版本只支持Windows系统,后来的版本开始支持Unix系统,putty官方网站也说它是个Windows客户端,不过官网上有Unix版本的源代码提供下载。而且putty是MIT协议的开源软件,所以可以用官网上通过的Unix版本的源代码在Linux系统上编译安装,方法是先下载并解压源代码包,然后用cd命令切换到源代码目录,再切换到unix子目录,在这个unix子目录下进行编译,编译方法是先执行:./configure,再执行:make,如果编译成功,在目录中会有一个名为putty的二进制文件,用命令:./putty执行就可以启动putty了。

putty怎么加时间戳

putty 几乎是我用过的远程工具里面的最好的了。目前感觉还有的缺憾有

缺少标签页切换

没有命令窗口

log文件保存时没有保存时间线的选项

今天来动手为putty增加在保存的log的前面打上时间标签。

下载putty的源代码,假设你把它解压到putty这个文件夹内。我们主要更改以下几个文件

[putty\windows\winhelp.h](## winhelp.h)

putty\putty.h

putty\config.c

putty\logging.c

UI上添加选项

winhelp.h

在 WINHELP_CTX_xxxxx 字段新增一条。这里我新增了一条

#define WINHELP_CTX_logging_timeheader "config-logtimeheader"

CTX 后面的 logging_timeheader 等下会用到。

putty.h

在 #define CONFIG_OPTIONS(X) \字段新增一条,这里我新增的是

X(BOOL, NONE, logtimeheader) \

位置大概是1389行。

config.c

位置大概 1667 行,仿造原有的代码,添加一个checkbox。这里我写成

ctrl_checkbox(s, "Include time header of line", 'j',HELPCTX(logging_timeheader),conf_checkbox_handler, I(CONF_logtimeheader));

上面的代码中,HELPCTX(logging_timeheader) 里面的 logging_timeheader 是在 putty\windows\winhelp.h 新增的条目。

I(CONF_logtimeheader)中的 logtimeheader是在 putty\putty.h 中新增的条目。

请点击输入图片描述

功能实现

这一步的主逻辑是在 putty\logging.c 这个文件内添加的。修改位置为大概 54 行。static void logwrite(LogContext *ctx, ptrlen data) 这个函数体内。修改后如下所示

static void logwrite(LogContext *ctx, ptrlen data){    /*

    * In state L_CLOSED, we call logfopen, which will set the state

    * to one of L_OPENING, L_OPEN or L_ERROR. Hence we process all of

    * those three _after_ processing L_CLOSED.

    */

   if (ctx-state == L_CLOSED)

       logfopen(ctx);    if (ctx-state == L_OPENING) {

       bufchain_add(ctx-queue, data.ptr, data.len);

   } else if (ctx-state == L_OPEN) {

       assert(ctx-lgfp);        if (fwrite(data.ptr, 1, data.len, ctx-lgfp) data.len) {

           logfclose(ctx);

           ctx-state = L_ERROR;

           lp_eventlog(ctx-lp, "Disabled writing session log "

               "due to error while writing");

       }        /************** 新增开始 **************/

       if ((strcmp(data.ptr, "\n") == 0) (conf_get_bool(ctx-conf, CONF_logtimeheader))) {            char buf[256];            struct tm tm;

           tm = ltime();

           strftime(buf, 24, "%Y.%m.%d %H:%M:%S   ", tm);

           fwrite(buf, 1, strlen(buf), ctx-lgfp);

       }        /*************** 新增结束 *************/

   }   /* else L_ERROR, so ignore the write */}

logwrite 这个函数是用来将putty窗口内显示的字符输出到log文件内的。

如果调用这个函数的地方是一行一行传进来的的话,修改的地方应该是在调用这个函数的地方。但是根据调用的情况来看,多数情况下是一个字符一个字符写的。

所以我的做法是检查到输出的字符是 \n 时,就输出一个时间,这样下一行再输出的内容就是跟在这个时间后面的。

最后实现的效果大概是下面这个样子

putty是什么,怎么用?

PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。

1、putty是ssh的一种连接方式,一般是连接linux服务器用的,需要先建立连接后才能打开的。

2、输入要连接的主机ip。

3、输入端口号,默认是22 ,如果不知道目标主机端口可以用默认端口号测试一下连接。

4、设置完成后单击保存,将此次设置保存起来,下次就可以单击保存的ip自己连接,不用重新输入主机ip等信息了。一切操作完毕,单击连接,可能有几秒的停顿,稍等一下,会弹出登录界面输入用户名密码登录到目标主机。

putty源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于putty源码解析、putty源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/886.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载