SSH免密码及别名登录设置

问题

众所周知,在用SSH远程登录linux服务器时,可以用下面的命令:

ssh root@192.168.1.209

但麻烦的是,每次都要输入服务器地址和密码,有没有方法不用每次都输入密码,甚至可以给服务器设置一个容易记住的别名,例如可以ssh 209直接登录。

解决

使用”公钥登录”的方法可以解决这个问题。“公钥登录”的原理很简单,用户将自己的公钥储存在远程服务器上。登录的时候,远程服务器会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录。

1. 免密登录

在用户的~/.ssh目录下有文件id_rsaid_rsa.pub,前者表示本机的私钥,后者表示本机的公钥。如果没有这两个文件,则可以运行下面的命令生成:

$ ssh-keygen

运行上面的命令以后,系统会出现一系列提示,一路按回车即可,运行结束在.ssh目录会生成上述两个文件。

然后用ssh-copy-idscp命令将生成的公钥id_rsa.pub传到远程机器上:

$ ssh-copy-id root@192.168.1.209

因为公钥只是一串字符器,所以可以不用上面这个命令,可以直接拷贝本机的公钥里的字符串,附加到远程主机的~/.ssh/authorized_keys里,这样就可以免密登录了。

2. 别名登录

按上面第一步设置后,可以用ssh root@192.168.1.209不用输入密码就可以直接登录了,现在设置将root@192.168.1.209209代替,直接用ssh 209就可以登录。

在本机的 ~/.ssh目录下创建 config文件:

$ vim ~/.ssh/config

输入以下内容:

Host 209
User root
HostName 192.168.1.209
IdentityFile ~/.ssh/id_rsa

其中内容说明如下(端口默认为22):

  • Host 209 :自己定的别名
  • User root :远程主机的用户名
  • HostName 192.168.1.209:远程主机的地址
  • IdentityFile ~/.ssh/id_rsa:本地私钥

当前如果要登录多个主机,可以设置多个:

Host herohuang
HostName herohuang.com
User acheron
IdentityFile ~/.ssh/id_rsa_a
Host github
HostName github.com
User github
IdentityFile ~/.ssh/id_rsa_b

实时应用监控平台CAT安装和配置

CAT是什么

CAT是一个Java语言编写的实时监控系统,能够跟各种流行的中间件框架集成(MVC框架、RPC框架、数据库框架、缓存框架等),实现对应用各层级的系统运行状况监控。

CAT支持的监控消息类型

  • Transaction: 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
  • Event :用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
  • Heartbeat: 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。 Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
  • Trace: 用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息

运行环境

  • Java 6 以上
  • Web 应用服务器,如:Apache Tomcat、JBoss Application Server、WebSphere Application Server、WebLogic Application Server(可选项,内置Netty应用服务器)
  • MySQL 数据库
  • Maven 3 以上(只编译和安装时需要)

开始安装

前提:已安装jdk、git、maven、mysql

  • 获取源码:
    git clone https://github.com/dianping/cat.git
    
  • 进入cat目录,执行maven构建命令
    cd cat
    clean install -Dmaven.test.skip=true
    

此处如果编译不成功,不能下载相关jar包,则可以手动下载,包在cat的mvn-repo分支下(https://github.com/dianping/cat/tree/mvn-repo) ,下载后拷贝到本地的maven仓库下

  git checkout mvn-repo
  cp -R * ~/.m2/repository
  • 将构建成功后的war包重命名,并拷贝到tomcat的webapp下
    mv cat-alpha-1.4.0.war cat.war
    cp cat.war tomcat/webapp
    
  • 启动tomcat,访问如下地址,后台默认登录catadmin/catadmin
    http://localhost:8080/cat/
    

创建数据库

  • 安装好mysql后,登录mysql,创建表空间
    create database cat;
    
  • 执行cat源码下的数据库脚本cat/script/Cat.sql,创建相关表
    use cat;
    source Cat.sql;
    

修改服务配置

  • /data/appdatas/cat/下,如果没有则新建此目录,确保这个目录有读写权限
    cd /data/appdatas/cat/
    
  • 将cat源码下script目录下的三个配置文件(client.xml、server.xml、datasources.xml)拷贝到上述目录
    cp /cat/script/*.xml /data/appdatas/cat/
    

*** 修改配置文件之前的几项假设:***

  • cat.war 包部署在10.8.40.26、10.8.40.27、10.8.40.28三台机器上,10.8.40.26为三台机器中的主服务器,TCP端口只能局域网内访问;
  • 数据库采用 MySQL安装在10.8.40.147上;
  • 暂不启用HDFS存储服务;
  • 暂不启用LDAP服务;

1. 修改客户端配置文件:client.xml

打开/data/appdatas/cat/client.xml客户端配置文件,

<config mode="client"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xsi:noNamespaceSchemaLocation="config.xsd">
    <servers>
        <server ip="10.8.40.26" port="2280" http-port="8080" />
        <server ip="10.8.40.27" port="2280" http-port="8080" />
        <server ip="10.8.40.28" port="2280" http-port="8080" />
    </servers>
</config>

配置说明:

  • mode : 定义配置模式,固定值为client;–暂未使用
  • servers : 定义多个服务端信息;
  • server : 定义某个服务端信息;
  • ip : 配置服务端(cat-home)对外IP地址
  • port : 配置服务端(cat-home)对外TCP协议开启端口,固定值为2280;
  • http-port : 配置服务端(cat-home)对外HTTP协议开启端口, 如:tomcat默认是8080端口,若未指定,默认为8080

2. 修改数据库配置文件:datasources.xml

打开/data/appdatas/cat/datasources.xml数据库配置文件,

<data-sources>
    <data-source id="cat">
        <maximum-pool-size>3</maximum-pool-size>
        <connection-timeout>1s</connection-timeout>
        <idle-timeout>10m</idle-timeout>
        <statement-cache-size>1000</statement-cache-size>
        <properties>
            <driver>com.mysql.jdbc.Driver</driver>
            <url><![CDATA[jdbc:mysql://10.8.40.147:3306/cat]]></url>
            <user>root</user>
            <password>mysql</password>
            <connectionProperties>
                <![CDATA[useUnicode=true&autoReconnect=true]]>
            </connectionProperties>
        </properties>
    </data-source> 
    <data-source id="app">
        <maximum-pool-size>3</maximum-pool-size>
        <connection-timeout>1s</connection-timeout>
        <idle-timeout>10m</idle-timeout>
        <statement-cache-size>1000</statement-cache-size>
        <properties>
            <driver>com.mysql.jdbc.Driver</driver>
            <url><![CDATA[jdbc:mysql://10.8.40.147:3306/cat]]></url>
            <user>root</user>
            <password>mysql</password>
            <connectionProperties>
                <![CDATA[useUnicode=true&autoReconnect=true]]>
            </connectionProperties>
        </properties>
    </data-source>
</data-sources>

配置说明:

  • 主要修改项为:url(数据库连接地址)、user(数据库用户名)、password(数据用户登录密码)

3.修改服务端服务配置:server.xml

打开/data/appdatas/cat/server.xml服务端服务配置文件,

<config local-mode="false" hdfs-machine="false" job-machine="true" alert-machine="true">
    <storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7">
        <hdfs id="logview" max-size="128M" server-uri="hdfs://10.8.40.31/user/cat" base-dir="logview"/>
        <hdfs id="dump" max-size="128M" server-uri="hdfs://10.8.40.32/user/cat" base-dir="dump"/>
        <hdfs id="remote" max-size="128M" server-uri="hdfs://10.8.40.33/user/cat" base-dir="remote"/>
    </storage>
    <console default-domain="Cat" show-cat-domain="true">
        <remote-servers>10.8.40.26:8080,10.8.40.27:8080,10.8.40.28:8080</remote-servers>
    </console>
    <ldap ldapUrl="ldap://10.8.40.21:389/DC=dianpingoa,DC=com"/>
</config>

配置说明:

  • local-mode : 定义服务是否为本地模式(开发模式),在生产环境时,设置为false,启动远程监听模式。默认为 false;
  • hdfs-machine : 定义是否启用HDFS存储方式,默认为 false;
  • job-machine : 定义当前服务是否为报告工作机(开启生成汇总报告和统计报告的任务,只需要一台服务机开启此功能),默认为 false;
  • alert-machine : 定义当前服务是否为报警机(开启各类报警监听,只需要一台服务机开启此功能),默认为 false;
  • storage : 定义数据存储配置信息
  • local-report-storage-time : 定义本地报告存放时长,单位为(天)
  • local-logivew-storage-time : 定义本地日志存放时长,单位为(天)
  • local-base-dir : 定义本地数据存储目录
  • hdfs : 定义HDFS配置信息,便于直接登录系统
  • server-uri : 定义HDFS服务地址
  • console : 定义服务控制台信息
  • remote-servers : 定义HTTP服务列表,(远程监听端同步更新服务端信息即取此值)
  • ldap : 定义LDAP配置信息
  • ldapUrl : 定义LDAP服务地址

4.修改路由配置

登入 cat系统,修改路由配置,打开浏览器,输入http://10.8.40.26:8080/cat/

配置--》全局告警配置--》客户端路由,进入配置路由界面:

<?xml version="1.0" encoding="utf-8"?>
<router-config backup-server="127.0.0.1" backup-server-port="2280">
   <default-server id="127.0.0.1" weight="0.8" port="2280" enable="true"/>
   <network-policy id="default" title="default" block="false" server-group="default_machine">
   </network-policy>
   <server-group id="default_machine" title="????">
      <group-server id="127.0.0.1"/>
   </server-group>
   <domain id="cat">
      <group id="default">
         <server id="127.0.0.1" port="2280" weight="1.0"/>
      </group>
   </domain>
</router-config>
  • 把backup-server设置为当前服务器对外IP地址,端口固定为2280;
  • default-server定义可跳转的路由地址,可以设置多个。default-server的id属性配置可路由的cat-home服务IP地址,端口固定为2280;若需要禁用路由地址,可把enable设置为false。
  • 点击“提交”按钮,保存修改的路由配置

5. 复制配置到27、28两机器

  • 拷贝 10.8.40.26机器/data/appdatas/cat/目录中client.xml、server.xml、datasources.xml三个配置文件到27、28两机器相同目录中
  • 修改server.xml配置中的 job-machine 和 alert-machine属性,都设置为false,禁用生成报告和报警功能,只开启监听功能
  • 启动27、28上的Tomcat,开启cat服务,完成服务端的配置及启动
  • 若服务端只分配一台服务器,按10.8.40.26完成安装配置即可

这里记录我安装配置的过程,更详细的文档查看官网

2016年看过的书和电影

安静,安静,安静,以安静对抗一切安静!

所读书

  • 《增长黑客 : 创业公司的用户与收入增长秘籍》 范冰
  • 《卓有成效的程序员》 Neal Ford
  • 《Java夜未眠 : 程序员的心声》 蔡学镛
  • 《程序员的呐喊》 Steve Yegge
  • 《月光落在左手上:余秀华诗集》 余秀华
  • 《沸腾十五年 : 中国互联网1995-2009》 林军
  • 《创业维艰 : 如何完成比难更难的事》 本·霍洛维茨
  • 《持续集成 : 软件质量改进和风险降低之道》 Paul M.Duvall;Steve Matyas
  • 《马云 : 我的管理心得》
  • 《深入体验Java Web开发内幕 : 核心基础》 张孝祥
  • 《软技能 : 代码之外的生存指南》 John Sonmez
  • 《代码整洁之道》 Robert C. Martin
  • 《分布式服务框架:原理与实践》 李林锋
  • 《全球通史》 海斯、穆恩、韦兰

所看电影

  • 《寻龙诀》 2016-01-02
  • 《血迷宫》 2016-01-09
  • 《星球大战7:原力觉醒》 2016-01-15
  • 《巴顿·芬克》 2016-01-19
  • 《牯岭街少年杀人事件》2016-01-23
  • 《真实的谎言》 2016-01-24
  • 《迈阿密风云》 2016-02-03
  • 《逃狱三王》 2016-02-15
  • 《鬼子来了》 2016-02-21
  • 《老无所依》 2016-02-25
  • 《盗火线》 2016-02-28
  • 《末路狂花》 2016-03-02
  • 《角斗士》 2016-03-03
  • 《沉默的羔羊》 2016-03-05
  • 《性、谎言和录像带》 2016-03-06
  • 《十一罗汉》 2016-03-08
  • 《十二罗汉》 2016-03-27
  • 《十三罗汉》 2016-04-04
  • 《疯狂动物城可播放》 2016-04-03
  • 《天水围的日与夜》 2016-04-04
  • 《桃姐》 2016-04-10
  • 《权力的游戏 第一季》 2016-07-10
  • 《权力的游戏 第二季》 2016-07-13
  • 《权力的游戏 第三季》 2016-07-23
  • 《权力的游戏 第四季》 2016-07-23
  • 《权力的游戏 第五季》 2016-07-25
  • 《权力的游戏 第六季》 2016-07-31
  • 《小姐》 2016-08-07
  • 《枪火》 2016-08-21
  • 《狂野目标》 2016-09-06
  • 《精武战士》 2016-09-06
  • 《泰南拳》 2016-09-07
  • 《釜山行》 2016-09-16
  • 《僵尸世界大战》 2016-09-26
  • 《叶问3》 2016-10-06
  • 《全职杀手》 2016-10-07
  • 《天生杀人狂》 2016-10-19
  • 《暗战2》 2016-10-23
  • 《行尸走肉 第六季》 2016-10-27
  • 《一路向南》 2016-11-05
  • 《新婚燕尔》 2016-11-13
  • 《西部世界 第一季》 2016-12-05
  • 《惊声尖笑5》 2016-12-11
  • 《盲山》 2016-12-25