Thursday, April 25, 2013

CentOS SSH配置


默认CentOS已经安装了OpenSSH,即使你是最小化安装也是如此。所以这里就不介绍OpenSSH的安装了。

SSH配置:
1、修改vi /etc/ssh/sshd_config,根据模板将要修改的参数注释去掉并修改参数值:
Port 22 指定SSH连接的端口号,安全方面不建议使用默认22端口
Protocol 2,1 允许SSH1和SSH2连接,建议设置成 Protocal 2
其他参数根据自己的需要进行调整。配置方法详见: man ssh_config
2、修改hosts.deny 在最后面添加一行:
sshd:All
3、修改hosts.allow 在最后面添加一行:
sshd:All
如果为了安装可以限制访问的IP,设置如下:
sshd:192.168.0.101
sshd:192.168.0.102
上述配置表示只允许101和102的服务器进行SSH连接
4、启动SSH
/etc/init.d/sshd start

至此SSH已经可以连接了
输入连接IP
配置相关参数
选择utf-8支持中文显示
自动输入登录用户root
输入用户名后就可以连接到服务器

但是目前我们的SSH连接还需要输入密码,下面将介绍使用密钥进行连接,免去了输入密码的烦恼:
1、在被管理机上生产密钥


复制代码
 1 [root@localhost ~]# mkdir /root/.ssh
 2 [root@localhost ~]# ssh-keygen -t rsa
 3 Generating public/private rsa key pair.
 4 Enter file in which to save the key (/root/.ssh/id_rsa):   ##直接回车默认路径
 5 Enter passphrase (empty for no passphrase):                ##输入密码短语
 6 Enter same passphrase again:                               ##重复密码短语
 7 Your identification has been saved in /root/.ssh/id_rsa.   ##如果在这里报错是因为SeLinux引起的按照Policy:yum install selinux-policy
 8 Your public key has been saved in /root/.ssh/id_rsa.pub.
 9 The key fingerprint is:
10 aa:76:71:1e:51:fe:3b:4c:51:30:b2:90:55:e9:58:7c root@localhost.localdomain
11 The key's randomart image is:
12 +--[ RSA 2048]----+
13 |        .ooo+o   |
14 |        ...o+.E  |
15 |         o.+ o   |
16 |        . o o    |
17 |        S. . .   |
18 |      ..o   o    |
19 |      .+ . o .   |
20 |    ... .   +    |
21 |   ...       .   |
22 +-----------------+
复制代码
2、putty生产密钥
打开puttygen,如果没有该程序可以到putty官方网站下载。
点击Generate按钮后出现下图,在红框中不断移动鼠标知道密钥生成完成

上面的大红框就是我们生成的公钥、这个公钥用于放在被管理服务器上,而私钥放在自己的机器上。
Key comment是一个备注信息,如果是企业环境那么会有很多的公钥在一台机器上,为了识别的话一般都会根据每个人的自己定义一个备注。
可以使用邮箱或者工号,输入Key comment先复制下公钥,并点击Saved public Key 和 Saved Private Key保存两个密钥
接着打开密钥代理工具pageant.exe(同样可以在putty的官网下载),使用pageant.exe有一个很大的好处,如果你还需要使用putty的其他工具那么他们可以共享密钥验证,而不需要反复去设置密钥。
任务栏的pageant.exe图标右键选择view keys打开下面窗口。
点击Add key添加刚才保存的私钥。

3、被管理机密钥部署
将被管理机上刚才生产的id_rsa.pub复制成authrized.keys
[root@localhost .ssh]# cp id_rsa.pub authrized.keys
[root@localhost .ssh]# chmod 600 authrized.keys      ##这一步是必须的,否则连接不上
修改vi /root/.ssh/authrized.keys 删除原来的密钥,添加puttygen.exe生产的密钥(也就是前面复制的公钥)
复制代码
sh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAh+gDpVSNIwBHZvmHS240AoueNHIgDHhczQ/fhiN/IdAQVdh7Ovw2pnJ4sd6so0kqCizsU7FOu2rvaK7vHC3QrrYmeqn94V595pYGLnMCbtEd7ONew47TU8wjtdldbc7liEmkTVIdkCbbrzQa372/u2LSjkldu2BUiXkevlnGNUc= hellwen.wu
~
~
~
~
复制代码
保存退出。
4、打开putty登录
注意看上图中红色部分,如果你是经常连接这台机器的话建议输入IP并配置要后再Saved Sessions里输入识别名称并点击保存按钮,这样在列表框中就会长期保留该服务器的连接配置。



Wednesday, April 24, 2013

Centos 6.2 安装 Pythonbrew

安装pythontools
# yum install gcc patch zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
# yum groupinstall "Development tools"
# yum install python-setuptools
安装pythonbrew
# easy_install pythonbrew
初始化pythonbrew环境
# su - [username]
$ pythonbrew_install
根据提示修改.bashrc
$ echo "source ~/.pythonbrew/etc/bashrc" >> ~/.bashrc

列出可安装的Python版本
$ pythonbrew list --know
安装python
$ pythonbrew install 2.7.3
创建虚拟环境

$ pythonbrew venv create [env_name] -p 2.7.3
使用创建的虚拟环境
$ pythonbrew venv use [env_name]













Thursday, April 11, 2013

db2 联邦数据库练习


当我们需要对同一实例上两个数据库进行连接查询的时候是无法直接进行的。这一点在SQLServer中做得很好,可以直接使用数据库名称引用。而db2中必须使用联邦数据库(FEDERATED)
同一服务器上的两个实例:db2inst1 db2inst2 数据库分别是:mydb1 mydb2 (本地联邦和远程联邦同理,所以这里只演示远程联邦)
下面的操作在db2inst1上对db2inst2进行联邦,也就是可以在db2inst1上通过nickname访问db2inst2,所有操作都是在db2inst1下进行:

db2 update dbm cfg using FEDERATED YES
db2 connect to mydb1
--这里需要注意的是这个语句不能使用db2 ""执行,而是需要进入到db2 Command Line Processor 交互模式。这点是进行了很多尝试才发现的问题,注意问题是在password后面的字符串必须是双引号
--drda是默认的适配器
db2
create server f_mydb2 type db2/udb version 9.7 wrapper drda authorization db2inst2 password "******" options(dbname 'mydb2')
db2 "create user mapping for "db2inst1" server f_mydb2 options (add remote_authid 'db2inst2' , add remote_password '******')"
--db2inst2中存在一个表tb2
db2 "create nickname mydb2_tb2 for f_mydb2.db2inst2.tb2"
db2 "select * from mydb2_tb2"
db2 "select * from tb1 a inner join mydb2_tb2 b on b.id = a.id"

上面配置中需要注意的:

  1. 如果没有适配器可以使用Craete Wrapper创建一个适配器,如:Create wrapper drda 采用默认lib创建db2的适配器
  2. 因为语法原因,create server语句可能会需要在db2下执行,而不能以db2 ""方式执行
  3. create nickname时一定要记得必须在user mapping的用户下创建,否则无效



另外附上相关的表和视图:
SYSIBM.SYSWRAPPERS --每一行代表注册过的转换器 (wrapper) 
SYSIBM.SYSSERVERS  --每一行代表了数据源的信息,如数据源版本号,类型等
SYSIBM.SYSFUNCMAPPINGS   --包括函数映射的基本信息如函数映射名,基于服务器的名字等等,一般可以用来判断找不到相应函数这类的错误
SYSIBM.SYSSERVEROPTIONS   --包括对服务器选项的设置信息,如 Collating_sequence,PROXY_AUTHID 等,这些选项的设置可以对查询性能产生影响
SYSIBM.SYSTYPEMAPPINGS   --包括数据类型映射的基本信息,如联邦服务器这一侧的数据类型和远程数据源短的数据类型的对应关系,一般用于判断数据类型相关的错误
SYSIBM.SYSUSEROPTIONS   --在这个表中包括了用户选项及其设置值,如连接远程数据源使用的用户名和密码信息 (REMOTE_AUTHID, REMOTE_PASSWORD) 等,一般可以用于判断连接错误或者访问权限错误 ( 配合 DB2 本身的 SYSDBAUTH 系统表 ) 
SYSIBM.SYSWRAPOPTIONS   --其中包含了关于创建的转换器的一些可选信息,例如在使用转换器的时候是否使用“ Trusted ”或者“ Fenced ”选项
SYSIBM.SYSPASSTHRUAUTH
SYSIBM.SYSFUNCMAPPARMOPTIONS
SYSIBM.SYSFUNCMAPOPTIONS

视图:
SYSCAT.FUNCMAPPINGS 
SYSCAT.FUNCMAPPARMOPTIONS 
SYSCAT.FUNCMAPOPTIONS 
SYSCAT.NICKNAMES 
SYSCAT.PASSTHRUAUTH 
SYSCAT.SERVEROPTIONS 
SYSCAT.SERVERS 
SYSCAT.TYPEMAPPINGS 
SYSCAT.USEROPTIONS 
SYSCAT.ROUTINESFEDERATED