linux-CentOS7 SSH服务基础知识1

1.基本介绍

SSH是远程连接Linux,管理Linux的服务。
Secure Shell Protocol:简写 SSH,即安全的Shell协议,默认端口22

ssh协议属于tcp/ip协议族

2.网络服务对应端口介绍

873---rsync
22----ssh
25----smtp  邮件发送服务
110---pop3 邮件接收服务
80----web  网页服务
23----telnet
111---rpcbind
21----ftp
3389--windows远程桌面

3.远程连接服务

telnet 数据是明文的 连交换机和路由器,配置。
telnet ip port 监测端口以及服务是否好的。

服务端和客户端,称之为c/s架构,client/server
浏览器/服务器,称之为b/s架构,browser/server 大趋势。

4.ssh服务端软件

rpm -qa openssh openssl #<==查询
openssh-7.4p1-16.el7.x86_64    #<==ssh服务。
openssl-1.0.2k-16.el7.x86_64   #<==加密用的ssl。
yum install openssl openssh -y #<==安装

配置文件: /etc/ssh/sshd_config
/etc/ 服务的配置目录

5.ssh客户端工具介绍

windows:
	xshell    个人免费
	SecureCRT 收费  
	putty
linux:
    ssh

6.Linux ssh客户端里含有的命令

[root@m01 ~]# rpm -ql openssh-clients
/usr/bin/scp          #远程拷贝文件(加密)。
/usr/bin/sftp         #ftp服务,加密的传输文件。
/usr/bin/ssh          #远程连接。
/usr/bin/ssh-copy-id  #拷贝密钥中的公钥文件的。

7.ssh客户端命令介绍与实践

7.1 ssh命令:远程连接linux

ssh   -p   22    root@10.0.0.31
命令   -p  端口    用户@IP
上述命令相当于ssh 10.0.0.31

7.2 ssh命令:远程执行命令

ssh 10.0.0.31 ifconfig

7.3 scp命令:远程拷贝

secure copy,加密的拷贝

SCP命令参数:
-P 端口
-r 递归
-p 保持属性
-l 限制速度
推:
scp -P 22 -rp /data root@172.16.1.7:/tmp/
类似rsync远程shell的推送模式:
rsync -avz /data root@172.16.1.7:/opt
rsync -avz /data -e "ssh -p 22" root@172.16.1.7:/opt

拉:
scp -P 22 -rp root@172.16.1.7:/tmp/data /tmp/
类似rsync远程shell的拉取模式:
rsync -avz root@172.16.1.7:/opt/data /data
简单拉的写法(默认):
scp -rp 172.16.1.7:/tmp/etc /tmp
===============================
对比下scp和rsync
scp每一次都全量拷贝,加密拷贝
rsync第一次全量,以后增量拷贝,远程shell也是加密拷贝。

7.4 sftp

(了解即可)

sftp命令:加密的ftp服务,默认缺点不能锁定固定目录。
ftp:vsftp服务。RHCE课程里讲。

sftp  -oPort=22 root@172.16.1.7
(exit退出)
pwd 查看当前目录
sftp> put "/etc/hosts"    #上传远端家目录。
sftp> put /etc/hosts /tmp #上传远端指定目录/tmp。
sftp> get /etc/yum.conf   #下载到本地家目录。
sftp> get oldboy.txt /etc #下载到本地指定目录/etc

sftp:/root> put  "e:\vm\oldgirl.txt"
#上传win10文件
unzip oldboy.zip  #解压zip压缩包

sftp服务也支持windows ftp客户端:
winscp,flashftp,xshell也支持

常规和服务器交互数据文件:
rz/sz  属于lrzsz

8.xshell ssh连不上服务器 如何排查?

1.ping IP(查看网络通不通):
不通:检查物理网络网线,电脑IP设置。
通:表示物理链路通的。
2.telnet ip port(查看服务端有没有开服务)
不通:查服务器端防火墙(firewalld)和SSH服务(ps -ef|grep sshd,netstat -lntup|grep sshd)
3.检查本地xshell 连接的IP 端口 协议 密码 用户

9.ssh服务端

[root@m01 ~]# ll /etc/ssh/ssh*
/etc/ssh/ssh_config  #ssh配置文件。
/etc/ssh/sshd_config #sshd配置文件。

10.ssh服务配置优化

####Start by oldboy#2018-04-26###
Port 52113                          #使用大于10000的端口
#跳板机、vpn没有,也没有做限制内网访问,这时候需要调端口,不是必须的
PermitRootLogin no                  #禁止root远程登录,可以su - root,C7需要改yes为no
PermitEmptyPasswords no             #禁止空密码登录,C7默认就是

UseDNS no                           #不使用dns解析,yes改为no
GSSAPIAuthentication no             #禁止连接慢的解决配置
ListenAddress 172.16.1.61:52113     #只允许内网IP连接SSH(172.16.1.0####End by oldboy#2018-04-26###

ps:#号注释的是默认设置

集群架构实际配置:
PermitEmptyPasswords no #禁止无密码登录
UseDNS no #解析域名慢
GSSAPIAuthentication no
#ListenAddress 172.16.1.61:22  #将来配置VPN安全服务之后再加此行。本机IP。

11.SSH服务通信原理

SSH协议:SSH协议有两个版本:
SSH 1.X  有漏洞,不用了
SSH 2.X  主流。

查看C6
Protocol 2

查看7:连参数都没了。

客户端秘钥位置: ~/.ssh/known_hosts 

通信原理:

12.SSH两种认证方式

12.1 密码认证 pam

用户名、密码登录

12.2 秘钥认证

不需要密码了,使用秘钥文件就可以连接服务器了。
自学:如何使用xshell秘钥的方式连接Linux。

13.秘钥认证实践

实践秘钥认证:
项目实践:批量管理、批量分发内容项目

m01对web01、02批量管理,不用密码

项目经验:实现SSH批量分发文件、批量管理服务方案
借助:秘钥文件,登录的时候不用使用密码。

m01:  10.0.0.61 管理机(放钥匙)
web01:10.0.0.7  被管理机(放锁)
web02:10.0.0.8  被管理机(放锁)
普通用户oldboy(sudo提权 很麻烦),所以用root

13.1 在61(管理机)上生成密钥对(方便)。

[root@m01 ~]# ssh-keygen 
ssh-keygen 连续回车
自学:如何一键生成秘钥对(不需要按回车)。

13.2 把锁放到7/8(web服务器)上

/usr/bin/ssh-copy-id  #专业拷贝密钥中的公钥文件的。

ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.7
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.8
# -i指定~/.ssh/id_rsa.pub文件

13.3ssh-copy-id:原理

scp -rp ~/.ssh/id_rsa.pub 172.16.1.7:~/.ssh/authorized_keys
特别注意此处权限,改了连接不上:
[root@web02 ~]# ls ~/.ssh/ -ld
drwx------ 2 root root 29 422 12:18 /root/.ssh/      #700
[root@web02 ~]# ls ~/.ssh/ -l
总用量 4
-rw------- 1 root root 390 422 12:18 authorized_keys #600

13.4 测试远程执行命令:

远端查询ip,此处用172,因为使用172拷贝的
ssh 172.16.1.7 ifconfig
ssh 172.16.1.8 ifconfig

13.5 用脚本批量执行命令
查询ip地址

[root@m01 ~]# cat /server/scripts/cmd.sh
ssh 172.16.1.7 ifconfig
ssh 172.16.1.8 ifconfig

[root@m01 ~]# cat /server/scripts/cmd.sh
for n in 7 8
do
   ssh 172.16.1.$n ifconfig
done

执行脚本:
sh /server/scripts/cmd.sh

脚本对远程服务器执行任意命令:

[root@m01 ~]#cat /server/scripts/cmd.sh
#批量查询IP地址
for n in 7 8
do
   echo "======172.16.1.$n======="
   #"$1"=命令
   ssh 172.16.1.$n "$1"
done

例如:

#查看
[root@m01 ~]#sh /server/scripts/cmd.sh "ls"
======172.16.1.7=======
anaconda-ks.cfg
======172.16.1.8=======
anaconda-ks.cfg
[root@m01 ~]#sh /server/scripts/cmd.sh "cat /etc/redhat-release"
======172.16.1.7=======
CentOS Linux release 7.8.2003 (Core)
======172.16.1.8=======
CentOS Linux release 7.8.2003 (Core)

#删除:
[root@m01 /data]#sh /server/scripts/cmd.sh "rm -fr /opt/*"
======172.16.1.7=======
======172.16.1.8=======
[root@web01 /mnt]#ls /opt/

#m01管理机复制文件到远端web:

[root@m01 /data]#cat /fenfa1.sh 
#!/bin/sh
. /etc/init.d/functions
if [ $# -ne 2 ]
#命令行的传参个数

then
    #$0:脚本名字和路径
    echo "usage:/bin/sh $0 localfile remotedir"
    exit 1
fi

for n in 7 8
do
   scp -P 22 -rp $1 root@172.16.1.$n:$2 &>/dev/null
   
   #判断上一条命令是否执行成功
   if [ $? -eq 0  ]
   then
	    action "172.16.1.$n successful" /bin/true
   else
        action "172.16.1.$n failure" /bin/false
   fi
done
[root@m01 /]#mkdir /data -p
[root@m01 /]#ls /data/
[root@m01 /]#cd /data/
[root@m01 /data]#ls
[root@m01 /data]#touch {1..5}.txt
[root@m01 /data]#sh /fenfa1.sh /data /opt/
172.16.1.7 successful                                      [  确定  ]
172.16.1.8 successful                                      [  确定  ]


#web端查看
[root@web01 /mnt]#ls /opt/
data
[root@web01 /mnt]#ls /opt/data/
1.txt  2.txt  3.txt  4.txt  5.tx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tony带水!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值