SSH是 Secure Shell Protocol的简写,主要用于远程登录!
以前使用telnet登录(23端口)他不是加密的,而ssh(22端口)是加密的
ssh有两个重要功能
1,远程连接登录服务
2,SFTP功能(安全的FTP),可以使用scp传输文件,也是通过ssh协议工作
ssh结构
rpm -qa openssl openssh
openssl-1.0.1e-42.el7.x86_64 加密
openssh-6.6.1p1-11.el7.x86_64 远程连接
SSH配置文件
ssh配置文件(有用的)
vim /etc/ssh/sshd_config
- Protocol 2 #协议
- Port 22 #端口
- ListenAddress 10.0.0.0/24:22 #监听的IP
- PermitEmptyPasswords #是否允许密码为空的用户登录,默认no
- PermitRootLogin #是否允许root 登录,默认yes(禁止SSH登录)
- UseDNS #禁止反向解析
- GSSAPIAuthentication yes #SSH远程登录慢,关闭改为no
需要重启ssh服务才能生效
/etc/init.d/sshd restart
远程连接命令
ssh -p22 daxian@10.0.0.123 /sbin/ifconfig eth0
报错信息:
ssh:connect to host 10.0.0.123 port 22:Connection refused
解决办法:(连接被拒绝)
- 防火墙没关(/etc/init.d/iptables stop)
- 端口没开(更改端口 或者 服务没启)
基于密钥安全认证
管理服务器 相当于钥匙(私钥), 每台客户端服务器放锁(公钥)
第一步创建用户跟密码(根据上图,所有服务器都要创建用户)
useradd daxian007 echo 12345|passwd --stdin daxian007
第二步 生成密钥
su - daxian007 #切换用户
ssh-keygen -t dsa #创建密钥对
cd .ssh
ls
id_dsa 私钥 id_dsa.pub 公钥
一键生成密钥对(脚本中经常用到)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
第三部 发送公钥(发送到所有机器上)
ssh-copy-id -i .ssh/id_dsa.pub daxian007@192.168.70.125
如果端口更改了
ssh-copy-id -i .ssh/id_dsa.pub -p 22 daxian007@192.168.70.125
第四部 测试一下(查看IP地址)
ssh -p22 daxian007@192.168.70.125 /sbin/ifconfig eth0
ssh -p22 daxian007@192.168.70.126 /sbin/ifconfig eth0
命令最好使用全路径
第五步 测试 分发hosts
创建一些数据给hosts
su - cat >>/etc/hosts<<EOF > 192.168.70.125 web01 > 192.168.70.126 web02 > 192.168.70.127 web03 > 192.168.70.128 web04 > 192.168.70.129 web05 > EOF su - daxian007
cp /etc/hosts ./
发送hosts给所有服务器(如果拷贝到/etc/daxian007是没有权限的)
sudo授权(所有机器)
echo "daxian007 ALL=(ALL) NOPASSWD: /usr/bin/rsync " >>/etc/sudoers
#也可以 放置cp命令 visudo -c
开始分发
cp /etc/hosts ./
scp hosts 192.168.70.125:~ #拷贝hosts到125家目录下 hosts 100% 263 0.3KB/s 00:00
ssh -t daxian007@192.168.70.125 sudo rsync ~/hosts /etc/hosts
#使用ssh -t 执行sudo rsync 复制到/etc/下
或者 rsync加密的,增量的
rsync -avz ./hosts -e 'ssh -p 22' daxian007@192.168.70.125:~
ssh -t daxian007@192.168.70.125 sudo rsync ~/hosts /etc/hosts
批量管理脚本实现
#!/bin/sh . /etc/init.d/functions for n in 125 126 127 128 129 do scp -P22 ~/hosts daxian007@192.168.70.${n}:~ ssh -p22 -t daxian007@192.168.70.${n} sudo rsync ~/hosts /etc/hosts done