分类目录归档:服务器

Linux服务器配置和管理

Apache代理连接到本地开发环境

有时候开发环境需要直接在公网进行调试。比如微信,要求通过公网已备案域名或者地址提供服务,而调试是在开发环境,一般不具备这个条件,通过下面的方法可以快速实现:

  1. 启动一个Server to Client的数据包转发forwarding,如下图,这样就会在服务器监听一个端口,并把对这个端口的请求转发到本地开发环境的指定端口;完成这一步以后相当于本地环境和服务器连通了,如果不要求80端口的话,问题就算解决了。

  1. 但如果非要用80端口,就需要接下来的配置,如果Apache已经占了80端口,就需要在Apache开启端口转发;当然了,前提还要做一个域名解析。使用这个域名访问你的开发环境。

修改PuTTY v0.65源码以支持密码保存

PuTTY为安全考虑不支持保存会话中的密码。有时候还是会有密码保存的需求。这里提供的是最新版本0.65的修改方法:

这个保存到注册表的,明文保存,有一定风险,慎用。

winhelp.h
#define WINHELP_CTX_connection_username “connection.username:config-username”
后增加
#define WINHELP_CTX_connection_password “connection.password:config-password”

setting.c
X(STR, NONE, username) \
后增加
X(STR, NONE, password) \


write_setting_s(sesskey, “UserName”, conf_get_str(conf, CONF_username));
后增加
write_setting_s(sesskey, “PassWord” , conf_get_str(conf, CONF_password));

gpps(sesskey, “UserName”, “”, conf, CONF_username);
后面增加:
gpps(sesskey, “PassWord” , “” , conf, CONF_password);

config.c

ctrl_editbox(s, “Auto-login username”, ‘u’, 50,
HELPCTX(connection_username),
conf_editbox_handler, I(CONF_username), I(1));
后增加
c = ctrl_editbox(s, “Auto-login password”, ‘w’, 50,
HELPCTX(connection_password),
conf_editbox_handler, I(CONF_password), I(1));
c->editbox.password = 1;
ssh.c
找到
Plain old password authentication
在其后的变量定义后面增加
char *pwd;
pwd = conf_get_str(ssh->conf, CONF_password);
if (strlen(pwd)==0){

然后在其后的注释段Send the password packet前增加:
}else{
s->password = dupstr(pwd);
}

修改版本号:在version.h里修改TEXTVER的值即可。

官方下载的源代码 修改后的源代码

cygwin下编译PuTTY

正常安装Cygwin,下载PuTTY源码,编译时提示找不到 crt2.o ,查来查去,应该是Cygwin和mingw的冲突问题,需要手动把/lib/mingw 里的文件复制到新建的/usr/i686-pc-mingw32/sys-root/mingw/lib下才行,如下图:

人生日历截图20150917165846

然后再编译就遇到:不认识CRYPTPROTECTMEMORY_CROSS_PROCESS的问题,查找到winshare.c这个文件,把#ifdef COVERITY和对应的#endif注释掉。

再次编译后成功。

Linux中实现DDNS客户端的功能

近日在玩破狗盒子(Pogoplug,80元购自淘宝)。相当于一个功率不到5W的微型Linux电脑主机(普及一下知识:Linux不需要接显示器的)。我在W e s t 2 6 3上有一个域名,购买了每年50元的动态域名服务,不过他们只提供了Windows客户端。于是想要在破狗上实现他的DDNS客户端的功能。下面是具体的实施步骤:

1. 通过抓包工具分析该DDNS的交互流程。
    发现只是简单的http协议,访问DDNS服务器上的一个链接,把域名,密码作为参数传给服务器。抓到他的链接保存起来。

2. 在Linux上尝试用wget访问第一步得到的链接地址。  

wget --append-output="ddns.log" --output-document="-" --user-agent="west263DDNS/1.1" --no-http-keep-alive --no-cache "完整链接地址" >> ddns.log

 3. 查看日志文件,测试成功后保存成shell文件,调度为开机运行一次,并使用cron定时执行以免开机后外网地址变化。

忘记MySQL root密码怎么办?

在配置文件的mysqld一节,增加skip-grant-tables选项:

[mysqld]
skip-grant-tables

 重启mysql服务。

service mysql restart

 在服务器本机进入mysql(不需要输入密码):

mysql

 此时已经是root权限,可以做任何事情。有一点需要注意,如果要操作系统表,如增加用户等,可能会报错:

The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

 这个时候,在MySQL命令提示符下执行:

set global read_only=0;
flush privileges;

 接下来就可以创建用户,修改密码了。不过别忘了,在所有操作执行完毕后,运行:

set global read_only=1;
flush privileges;

 接下来退出MySQL命令行,删除或者注释掉刚开始添加到mysql配置文件(my.cnf)中的

skip-grant-tables

最后,保存配置文件,重启mysql服务即可。