centos7启用ssh证书登录

前言

本文基于实际Linux管理工作,实例讲解工作中使用ssh证书登录的实际流程,讲解ssh证书登录的配置原理,基于配置原理,解决实际工作中,windows下使用SecureCRT证书登录的各种问题,以及实现hadoop集群部署要求的无密码跳转问题。

ssh有密码登录和证书登录,初学者都喜欢用密码登录,甚至是root账户登录,密码是123456。但是在实际工作中,尤其是互联网公司,基本都是证书登录的。内网的机器有可能是通过密码登录的,但在外网的机器,如果是密码登录,很容易受到攻击,真正的生产环境中,ssh登录都是证书登录。

证书登录的步骤

1.客户端生成证书:私钥和公钥,然后私钥放在客户端,妥当保存,一般为了安全,访问有黑客拷贝客户端的私钥,客户端在生成私钥时,会设置一个密码,以后每次登录ssh服务器时,客户端都要输入密码解开私钥(如果工作中,你使用了一个没有密码的私钥,有一天服务器被黑了,你是跳到黄河都洗不清)。

2.服务器添加信用公钥:把客户端生成的公钥,上传到ssh服务器,添加到指定的文件中,这样,就完成ssh证书登录的配置了。

假设客户端想通过私钥要登录其他ssh服务器,同理,可以把公钥上传到其他ssh服务器。

真实的工作中:员工生成好私钥和公钥(千万要记得设置私钥密码),然后把公钥发给运维人员,运维人员会登记你的公钥,为你开通一台或者多台服务器的权限,然后员工就可以通过一个私钥,登录他有权限的服务器做系统维护等工作,所以,员工是有责任保护他的私钥的,如果被别人恶意拷贝,你又没有设置私钥密码,那么,服务器就全完了,员工也可以放长假了。

客户端建立私钥和公钥

在客户端终端运行命令

rsa是一种密码算法,还有一种是dsa,证书登录常用的是rsa。

假设用户是blue,执行 ssh-keygen 时,才会在我的home目录底下的 .ssh/ 这个目录里面产生所需要的两把 Keys ,分别是私钥 (id_rsa) 与公钥 (id_rsa.pub)

另外就是私钥的密码了,如果不是测试,不是要求无密码ssh,那么对于passphrase,不能输入空(直接回车),要妥当想一个有特殊字符的密码。

ssh服务端配置

ssh服务器配置如下:

配置好ssh服务器的配置了,那么我们就要把客户端的公钥上传到服务器端,然后把客户端的公钥添加到authorized_keys

在客户端执行命令

在服务端执行命令

如果有修改配置/etc/ssh/sshd_config,需要重启ssh服务器

客户端通过私钥登录ssh服务器

ssh命令

scp命令

每次敲命令,都要指定私钥,是一个很繁琐的事情,所以我们可以把私钥的路径加入ssh客户端的默认配置里

修改/etc/ssh/ssh_config

其他应用场景

SecureCRT密钥key远连接程ssh证书登录Linux

国内大部分人用的系统是windows,而windows下有很多ssh客户端图形工作,最流行,功能最强大的就是SecureCRT了,所以我会单独针对SecureCRT简单讲下实现ssh证书登录Linux的要点,步骤如下:

1:在SecureCRT创建私钥和公钥:主菜单->工具->创建公钥->选择RSA->填写私钥的密码->密钥长度填为1024->点击完成,生成两个文件,默认名为identity和identity.pub

2.把私钥和公钥转换为OpenSSH格式:主菜单->工具->转换私钥到OpenSSH格式->选择刚生成私钥文件identity->输入私钥的密码->生成两个文件,指定为id_rsa,id_rsa.pub

3.把公钥id_rsa.pub上传到ssh服务器,按照之前配置服务器端的证书,再配置一次。

另外,如果你之前用windows的 SecureCRT的证书登录linux的,有一天你换成了linux,并希望通过原来的私钥登录公司的服务器,那么可以把id_rsa拷贝倒~/.ssh/目录下,配置ssh客户端参考上文。

备注:ssh对证书的文件和目录权限比较敏感,要么根据出错提示设置好文件和目录权限,要么是把StrictModes选项设置为no

hadoop部署的无密码ssh登录

hadoop要求master要无密码跳转到每个slave,那么master就是上文中的ssh客户端了,步骤如下

在hadoop master上,生成公钥私钥,这个场景下,私钥不能设置密码。

把公钥上传到每个slave上指定的目录,这样就完成了ssh的无密码跳转了。

总结

ssh证书登录,在实际工作才是最常用的登录方式,本人结合了真正工作的场景普及了ssh证书登录的知识,并根据流行的hadoop部署和windows下最常用的SecureCRT实例讲解了证书登录。

 

转载自:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646346.html

 

Linux chmod命令 修改文件权限被禁止(not permitted)的解决办法

在阿里云主机上搭建的LAMP环境,在修改相关文件config.cache.inc.php的属性的时候
chmod 777 config.cache.inc.php
chmod: changing permissions of `config.cache.inc.php’: Operation not permitted

但是报了上面的一个错误

费了一番周折,终于查到用 chattr 可以解除这个限制

首先先查看一下属性
lsattr config.cache.inc.php
—-i——– config.cache.inc.php

然后去除i这个属性
chattr config.cache.inc.php

经过这一步操作后,就可以使用chmod来修改文件属性了

centos下使用nohup 实现关闭终端后程序仍然能运行

我们在维护linux机器的前提下,可能经常要压缩个大的文件或者复制大的文件等,各种需求。我们通常都是用SecureCRT来连接SSH服务,从而达到管理我们机器的目的。这样的话我们的网络是不可确定的,有时断了,我们要重新连接,但是这个时候在进去,刚才未完成的任务就没有办法继续了。

有了这个nohup,我们可以退出这个用户,程序还会自动把我们要做的跑完

一般形式为:nohup command &

使用nohup命令提交作业

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

nohup wget -c http://www.cnsecer.com/backup.zip > myout.file 2>&1 &

在上面的例子中,输出被重定向到myout.file文件中。

CentOS 安装jdk1.7 32位

1.下载jdk-7u21-linux-i586.rpm

2.运行安装

3.修改profile

//最后面加入

4. 保存退出。运行

5.再运行

然后一切ok,输入java版本显示命令,看看是否安装成功:

1

Linux下查看系统启动时间和运行时间

1.uptime命令
输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00

2.查看/proc/uptime文件计算系统启动时间
cat /proc/uptime
输出: 5113396.94 575949.85
第一数字即是系统已运行的时间5113396.94 秒,运用系统工具date即可算出系统启动时间

代码:

输出: 2008-11-09 11:50:31

3.查看/proc/uptime文件计算系统运行时间

代码:

输出:系统已运行:59天4时13分9秒

01

 

bash: chkconfig: command not found

[root@xuniji ~]# chkconfig
bash: chkconfig: command not found
[root@xuniji ~]# rpm -aq |grep chkconfig
chkconfig-1.3.30.1-2
[root@xuniji ~]# export PATH=/sbin:$PATH
[root@xuniji ~]# chkconfig
chkconfig version 1.3.30.1 – Copyright (C) 1997-2000 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: chkconfig –list [name]
chkconfig –add <name>
chkconfig –del <name>
chkconfig [–level <levels>] <name> <on|off|reset|resetpriorities>

[root@xuniji ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/gtl/bin
[root@xuniji ~]# PATH=”$PATH”:/sbin
[root@xuniji ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/gtl/bin:/sbin

大功告成!!!

在终端或纯文本界面下,打开用户主目录下的.bash_profile文件

#cd
#ls -a
#vi .bash_profile

在PATH那行后面加上/sbin,用冒号分割,如

PATH=$PATH:$HOME/bin:/sbin