===SSH服务===
软件包: openssh-server
端口: 22/tcp
配置文件:/etc/ssh/sshd_config 服务端配置文件
/etc/ssh/ssh_config 客户端配置文件
[root@station115 ~]# netstat -tnlp |grep :22 //查看那22端口的工作状态
[root@station115 ~]# ps aux |grep sshd
root 2729 0.0 0.0 7224 776 ? Ss 07:07 0:00 /usr/sbin/sshd
# ssh 192.168.2.104 //以当前用户
# ssh root@192.168.2.104 //以指定用户
# ssh -X 192.168.2.104 //可以执行远程主机的图形 oclock
# ssh 192.168.2.104 'hostname' //在远程主机上执行shell命令,这种方式没有连接
# ssh 192.168.2.104 date;date //先显示远程的时间,再显示本机时间
# ssh 192.168.2.104 'passwd root'
# echo "123" |passwd root --stdin //改本机root密码 --stdin标准输入,前面的输入作为后面修改密码的输入了
# ssh 192.168.2.104 'echo 123 |passwd root --stdin' 在远程主机上执行修改密码
rsync:增量同步 ,他复制的时候能够将源文件的权限也能原封不动的复制过去
rsync -a 源文件 目标 参数a 表示以归档模式(包括属性权限,文件夹子目录等)
这个命令的好处是:他只同步有差异的部分作同步,都有的就不会改了,不像cp那样,管你有没有,都重新复制
# rsync fsck.pdf /111.pdf
# rsync -a /mnt/test1 192.168.2.104:/root 将/mnt/test1目录和/mnt/test1目录下的所有文件都同步到。。
# rsync -a /mnt/test1/ 192.168.2.104:/root 同步/mnt/test1目录下的所有文件,这种同步没有将源文件里删除的文件在目标文件里删除
# rsync -va --delete /mnt/test1 192.168.2.104:/ 同步所有的修改,包括删除源 ,真正的绝对同步
scp:
# scp -r jfsutils-1.1.15.tar.gz 192.168.2.104:/ 这个就是拷贝了
sftp
# sftp 192.168.2.253 (这个同scp 一样,无需假设服务端,用ssh协议传输)
====配置
/etc/ssh/sshd_config 服务端配置文件
man sshd_config
vim /etc/ssh/sshd_config
UseDNS no 不使用DNS解析
GSSAPIAuthentication no 无验证 //authentication 验证
PermitRootLogin no 禁用root远程登录
AllowUsers jack alice 只允许jack和alice远程登录
Port 22222 修改端口范围 1 - 65535 尽量有理由的改动,慎用
# service sshd restart
# ssh tom@192.168.2.104 -p 22222 登录时-p指定端口
===使用公钥认证====
AuthorizedKeysFile .ssh/authorized_keys
教学案例:
1. 客户端生成公钥和私钥,例如以root用户
[root@station115 ~]# ssh-keygen //敲完这个命令一顿回车就可以了
[root@station115 ~]# ls .ssh/
id_rsa (私钥) id_rsa.pub(公钥) known_hosts
2. 将公钥传到所需登录服务器(对应的用户,特定的位置)
[root@station115 ~]# ssh-copy-id -i 192.168.2.104 (ssh-copy-id 自动将公钥拷贝到对方相应用户的家目录的.ssh目录下)
练习题:工程环境
三个节点使用用户oracle或grid相互登录,使用公钥认证
192.168.2.115 rac1 //可以在/etc/hosts文件里将这些写进去,方便解析
192.168.2.123 rac2
192.168.2.125 rac3
1. 在三个节点上都建立相同的用户,设置相同的密码
# useradd oracle
# useradd grid
# passwd oracle
# passwd grid
2. 做grid用户的公钥认证
a. rac1(先在随意一个节点上作)
[root@station115 ~]# su - grid
[grid@station115 ~]$ ssh-keygen
[grid@station115 ~]$ cd .ssh/
[grid@station115 .ssh]$ ls
id_rsa id_rsa.pub
[grid@station115 .ssh]$ mv id_rsa.pub authorized_keys //将公钥改名成authorized_keys
[grid@station115 .ssh]$ ls
authorized_keys id_rsa
b. 复制~/.ssh目录到对方对应的目录中
[grid@station115 .ssh]$ rsync -a ~grid/.ssh 192.168.2.123:~grid/ 所有的都同步
[grid@station115 .ssh]$ rsync -a ~grid/.ssh 192.168.2.125:~grid/
=========================
批量给服务器改密码脚本:
#!/bin/bash
#基于公钥认证的基础上批量修改主机密码
#passwd=123
read -p "请输入本次此修改的密码:" passwd
for i in 'cat /root/hosts.txt'
do
ssh $i "echo $passwd |passwd root --stdin" &>/dev/null
if [ $? = 0 ];then
echo "`date +%F` $i 密码修改成功 " >> /root/modify_log.txt
else
echo "`date +%F` $i 密码修改失败 " >> /root/modify_log_error.txt
if
done