使用方法:
putty左侧分类选择Connection->Data,右侧一目了然。填好账号密码后,可以在Session中保存。现在是明文保存,存在一定风险,请勿保存未做安全措施线上服务器信息。
修改方法:
0. 网上搜索了教程,基本都是针对putty0.6版本的,对于C++水平较弱的人来说,参考教程给的思路,整理了一下方法。大体思路就是利用ssh可以保存用户名的功能扩展成保存密码的功能,基本采用复制username修改为password的方式制作,目前只支持SSH2登录方式,对于大多数linux服务器来讲足够了。

1. 官网下载putty源码 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
2. 使用VS2012以上C++编译项目
3. 修改config.c文件1952行,增加:

ctrl_editbox(s, "Auto-login password", 'w', 50,
HELPCTX(connection_password),
conf_editbox_handler, I(CONF_password), I(1));

4. 修改putty.h文件712行,增加:
X(STR, NONE, password) \
X(INT, NONE, password_from_env) \

5. 修改winhelp.h文件78行,增加:
#define WINHELP_CTX_connection_password "connection.password:config-password"
#define WINHELP_CTX_connection_password_from_env "connection.passwordfromenv:config-password-from-env"

6. 修改ssh.c文件,搜索Send the password packet
在注释下面增加:
oYeah:;

找到ssh2_pkt_addstring(s->pktout, s->password);
替换s->password为ssh->password

搜索Plain old password authentication.
在下面代码
add_prompt(s->cur_prompt, dupprintf("%s@%s's password: ",
ssh->username,
ssh->savedhost),
FALSE);
的后面增加:
ssh->password = conf_get_str(ssh->conf, CONF_password);
s->password = ssh->password;
if (strlen(ssh->password) == 0) {
ret = get_userpass_input(s->cur_prompt, NULL, 0);
while (ret < 0) {
ssh->send_ok = 1;
crWaitUntilV(!pktin);
ret = get_userpass_input(s->cur_prompt, in, inlen);
ssh->send_ok = 0;
}
}
else {
ret = 1;
goto oYeah;
}

dialog.c

增加

union control *ctrl_editpasswordbox(struct controlset *s, char *label, char shortcut,
int percentage,
intorptr helpctx, handler_fn handler,
intorptr context, intorptr context2)
{
union control *c = ctrl_new(s, CTRL_EDITBOX, helpctx, handler, context);
c->editbox.label = label ? dupstr(label) : NULL;
c->editbox.shortcut = shortcut;
c->editbox.percentwidth = percentage;
c->editbox.password = 1;
c->editbox.has_list = 0;
c->editbox.context2 = context2;
return c;
}

这里的c->editbox.password = 1;说明该文本框为密码类型

.config 引用的地方也要改为对应的函数

ctrl_editpasswordbox(s, "Auto-login password", 'w', 50,
HELPCTX(connection_password),
conf_editbox_handler, I(CONF_password), I(1));

点击下载:putty.0.64