06@ssh服务的使用及配置

SSH远程管理服务简介

SSH中的常用命令

SSH和其他远程链接工具对比

SSH安全登录

编写跳板机脚本

一、SSH远程管理服务的简介

SSH是一个安全协议,在进行数据传输时,会对传输的数据包进行加密处理,对加密后的数据再进行传输,确保了数据传输安全。


#那SSH服务主要功能有哪些呢?
1.提供远程连接服务器的服务
	linux默认远程连接协议: ssh       22      
	                      telnet     23
	windows默认远程连接协议:RDP(remote desktop)3389
2.对传输进行加密

二、常用协议的默认端口

ssh				22
telnet			23
http			80
https			443
ftp				20 21
RDP				3389
mysql			3306
dns				53
zabbix			10051 10050
elasticsearch	 9200 9300
pop3			110
rpcbind			111
rsync			873
redis			6379

1.测试ssh和telnet服务

#1.安装telnet
[root@web01 ~]# yum install -y telnet-server


#2.启动telnet
[root@web01~]#systemctl start telnet.socket


telnet 默认端口是:23
        SYNOPSYS
        telnet [user@]host [port]

#3.创建普通用户
[root@nfs ~]# useradd  test
[root@nfs ~]# echo 123 | passwd --stdin test
Changing password for user test.
passwd: all authentication tokens updated successfully.


#4.验证登录
[d:\~]$ telnet 10.0.0.31 23

Connecting to 10.0.0.31:23...
Connection established.
To escape to local shell, press Ctrl+Alt+].

Kernel 3.10.0-957.el7.x86_64 on an x86_64
nfs login: lhd
Password: 
Last login: Tue Feb 18 09:56:30 from ::ffff:10.0.0.1
[lhd@nfs ~]$

	

2.ssh和telnet对比

telnet:     默认端口是:23
	1.不支持root直接登录,只能用普通用户
	2.明文传输数据,安全性不高。
	
ssh:        默认端口是:22
	1.支持root直接登录
	2.所有数据传递都是加密的传输

三、SSH中的常用命令

ssh

scp

sftp

ssh-copy-id

ssh-keygen

1.ssh 简单使用
#主要用来远程登录和执行命令,ssh默认使用当前用户登录。


[root@web01 ~]# ssh -p 22 root@10.0.0.31
ssh				#命令
-p				#指定端口(在终端无法使用)
22				#指定ssh协议端口
root			#连接时使用的用户(如果不写用户,默认使用当前服务器当前用户)
@				#分隔符
10.0.0.31		#远端服务器IP



-o StrictHostKeyChecking=no		#登录时跳过验证身份


# 远程登录
ssh [user@]IP

# 远程执行命令
ssh [user@]IP [commond]
2.scp远程文件传输
#常用参数:

-P  指定端口,默认是22
-p	保持传输文件属性不变
-r	表示递归拷贝目录
-l	限速


#-l 限速  单位是 kb
[root@nfs ~]# dd if=/dev/zero of=./1.txt bs=1M count=500
[root@nfs tmp]# scp file root@172.16.1.41:/backup/
root@172.16.1.41's password: 
file    46%  234MB  14.5MB/s   00:18

#设置速度为10M   10*1024*8=81920
[root@nfs tmp]# scp -l 81920 file root@172.16.1.41:/backup/



#远程传输scp的简单使用
[root@nfs ~]# scp inotify.sh 172.16.1.8:/opt
inotify.sh                                                                                                                                100%  196    26.2KB/s   00:00    
[root@nfs ~]# 
#scp客户端命令:  
     远程拷贝
     
   
#scp类似于rsync:
     scp全量		 
     rsync增量
     
#scp的推和拉:
    #推:将本地的/etc目录推送到backup服务器的/opt目录下
[root@nfs ~]# scp -r /etc/ root@172.16.1.41:/opt/
    #推:将本地的/etc目录下的文件推送到backup服务器的/opt目录下
[root@nfs ~]# scp -r /etc/* root@172.16.1.41:/opt/

   
   
   
   #拉:将远端172.16.1.41服务器的/etc目录拉取到本地的/opt目录下
[root@nfs ~]# scp -r root@172.16.1.41:/etc /opt/
        
3.sftp命令的传输
#sftp与rz的对比

sftp:
	1.能上传文件夹
	2.能支持断点续传
	3.支持上传大于4G的文件
	
rz:
	1.不能上传文件夹
	2.不支持断点续传
	3.只能上传小于4G的文件
	
	
#文件传输命令:
[root@web01 ~]# sftp root@10.0.0.31
  #查看连接后服务器
sftp> ls
  #查看本地服务器
sftp> lls


#两种操作格式:
拉取到:
   #命令     远程服务器文件   本地服务器位置
   sftp> get 1_nfs.gif ./

放置于:
   #命令     本地服务器文件   远程服务器位置
   sftp> put /data/1_nfs.gif /tmp/




#支持图形界面的传输: 
    Xftp   FileZilla  FlashFXP	
4.ssh-copy-id的使用
 ssh-copy-id复制公钥至目标服务器。ssh链接需要密码或公钥,每次链接太麻烦,所以可以通过ssh-copy-id进行免密登录
[root@m01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.31
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.
ECDSA key fingerprint is SHA256:UPOOIxMjGD7QyAGVJAVNX+3Jf65ef33D1aDmML1DBcY.
ECDSA key fingerprint is MD5:5d:7d:49:94:1d:a3:9c:2f:3c:66:db:64:3d:26:ea:90.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.1.31's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.16.1.31'"
and check to make sure that only the key(s) you wanted were added.

[root@m01 ~]#
#修改配置文件传输公钥于指定文件

[root@backup .ssh]# vim /etc/ssh/sshd_config 
AuthorizedKeysFile      .ssh/authorized_keys

#注:指示只给当前用户传输公钥
5.ssh-keygen命令的使用
[root@nfs ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nBdSldxbnEHgOrVdaWPis90aj3ScYDWg+4zYl6PAyzk root@nfs
The key's randomart image is:
+---[RSA 2048]----+
|          .o.=o+o|
|         .  = o.+|
|        . .. + X.|
|       . o .= O +|
|        S .+ * . |
|        ..o * *.o|
|         + o Boo+|
|        .E+ o..* |
|         +..  o .|
+----[SHA256]-----+
[root@nfs ~]# cd .ssh/
[root@nfs .ssh]# ll
total 8
-rw------- 1 root root 1675 Apr 23 15:49 id_rsa
-rw-r--r-- 1 root root  390 Apr 23 15:49 id_rsa.pub

在这里插入图片描述

四、SSH远程登录验证

1.基于账户密码的方式远程登录
#需要知道服务器的IP,端口,账户,密码,才可以通过ssh客户端连接远程主机



[root@web01 ~]# ssh -p 22 root@172.16.1.31
root@172.16.1.31's password: 
Last login: Tue Feb 18 11:01:54 2020 from 10.0.0.7
[root@nfs ~]# 


#密码设置条件
1.复杂的密码:yonghu_12@31_sysnum(密码复杂,不易记)
2.简单的密码:1、 123、234、(简单容易被破解)
3.每台服务器密码不一样      
4.密码三个月更换一次
5.输入密码错误三次自动锁死
6.密码有key,30秒一变或者1分钟一变
2.基于秘钥的方式实现远程登录
#常用的参数:
-t		指定秘钥类型 rsa  dsa
-C		指定用户邮箱
1)生成秘钥
[root@nfs ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nBdSldxbnEHgOrVdaWPis90aj3ScYDWg+4zYl6PAyzk root@nfs
The key's randomart image is:
+---[RSA 2048]----+
|          .o.=o+o|
|         .  = o.+|
|        . .. + X.|
|       . o .= O +|
|        S .+ * . |
|        ..o * *.o|
|         + o Boo+|
|        .E+ o..* |
|         +..  o .|
+----[SHA256]-----+
[root@nfs ~]# cd .ssh/
[root@nfs .ssh]# ll
total 8
-rw------- 1 root root 1675 Apr 23 15:49 id_rsa
-rw-r--r-- 1 root root  390 Apr 23 15:49 id_rsa.pub
2)推送秘钥到服务器
#1.命令推送:
[root@nfs ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.31
 ------
 ---
[root@nfs ~]# ssh 172.16.1.31
Last login: Tue Feb 18 12:14:27 2020 from 172.16.1.7
[root@nfs ~]#
# 手动复制公钥

#查看公钥并复制
[root@nfs ~]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvokaPfSni0HC+tppFKrKuYrSH41D1Y35wetrhtjyrjeyjh3hK7iBhiCCMRc34oBgMh1aMZQekUf8CgUlSwtR3RdgKzKP68L5R/ggmZzGYZ5UOstJd0Vw1I14kZEaBHIF734tdNYbEcv8CXFku1iQzKrwkIs4FX7k3TxogI4XcE+/ root@backup

#把公钥复制到要连接的服
[root@backup ~]# mkdir .ssh/
[root@backup ~]# vim .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvokaPfSni0HC+tppFKrKuYrSH41D1Y3fgnFCZEGR5Xj2y1yil0s3hK7iBhiCCMRc34oBgMh1aMZQekUf8CgUlSwtR3RdgKzKP68L5R/ggmZzGYZ5UOstJd0Vw1I14kZEaBHIF734tdNYbEcv8CXFku1iQzKrwkIs4FX7k3TxogI4XcE+/ root@backup


 #检查文件修改权限属性
[root@backup ~]# chmod 700 .ssh/
[root@backup ~]# chmod 600 .ssh/authorized_keys

3)免密登录检查免密ip用户
[root@nfs ~]# cat xunjian.sh 
#!/bin/bash


[ $# -ne 1 ] && echo "请输入执行的命令" && exit 1



for i in 31 41 7

do
	echo "######172.16.1.$i#######"
	ssh root@172.16.1.$i "$1"
done
[root@m01 ~]#
3.免交互sshpass的使用
1)#安装sshpass软件包

[root@nfs .ssh]# yum install -y sshpass
2)#sshpass命令的使用

[root@nfs .ssh]# sshpass -p 1 ssh root@172.16.1.7
sshpass	命令
-p		指定密码
1		密码
ssh		连接命令
root	用户
@		分隔符
172.16.1.7	主机
3)#sshpass的脚本的编写

[root@nfs .ssh]# vim ssh.sh 
#!/bin/bash


for num in 41 31 7;do

        echo ------ 10.0.0.$num -------
        
        sshpass -p 1 ssh -o StrictHostKeyChecking=no 

root@10.0.0.$num df -h


done

4.免交互expect的使用
1)#安装expect

[root@nfs ~]# yum install -y expect
2)#expect的脚本的编写


[root@nfs ~]# cat expect.exp 
#!/usr/bin/expect


set ip 10.0.0.7
set pass 1
set timeout 30
spawn ssh root@$ip
expect {        
       "(yes/no)" {send "yes\r"; exp_continue}              "password:" {send "$pass\r"}

}

expect "root@*"  {send "df -h\r"}
expect "root@*"  {send "exit\r"}
expect 
    eof

五、ssh安全优化

1.ssh的基础安全优化
SSH作为远程连接服务,通常我们需要考虑到服务的安全,所以需要对服务进⾏安全⽅⾯的配置。



    1、更改远程登陆的端⼝
    [root@backup ~]# vim /etc/ssh/sshd_config 
    
     Port 2222         
    # 修改sshd服务的默认端口
    
    
    2、禁⽌root管理员直接登录
    [root@backup ~]# vim /etc/ssh/sshd_config 
  
  - PermitRootLogin no  
    # 禁止使用root登录服务器
    
    
    3、密码认证⽅式改为秘钥认证
    [root@backup ~]# vim /etc/ssh/sshd_config 
     
     PasswordAuthentication no
    # 禁止使用密码登录


	4、重要服务不适⽤公⽹IP地址
	[root@web2 ~]# vim /etc/ssh/sshd_config 
	
	UseDNS no
	[root@web2 ~]# vim /etc/ssh/sshd_config 
	
	
	GSSAPIAuthentication no
	# 禁止ssh进行dns反向解析,影响ssh连接效率参数
	
	
	
    5、使⽤防⽕墙限制来源IP地址
    
     GSSAPIAuthentication    no      
    # 禁止GSS认证,减少连接时产生的延迟
2.案例

编写一个跳板机脚本

对内网所有的机器进行免密
# 创建密钥
[root@m01 ~]# ssh-keygen -t rsa

# 免密登录
[root@m01 ~]# for i in 7 8 31 41 ;do ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.$i; done
跳板机脚本实现
#!/bin/bash
###########################################
# 		        欢迎登录
#       Linux 12  高级项目:跳板机
#           Date: 2021.04.23
#             Anther: hzl
###########################################

# 欢迎界面

echo -e "\033[36m ########################################### \033[0m"
echo -e "\033[36m # 		欢迎登录 \033[0m"
echo -e "\033[36m #       Linux 12   高级项目:跳板机 \033[0m"
echo -e "\033[36m #         Date: 2021.04.23 \033[0m"
echo -e "\033[36m #          Anther: hzl \033[0m"
echo -e "\033[36m ########################################### \033[0m"


while true;
do

echo -e "\033[36m \
1> web1  	172.16.1.7 \n \
2> web2  	172.16.1.8 \n \
3> nfs  	172.16.1.31 \n \
4> backup  	172.16.1.41 \n \
q> exit		退出登录 \n \
\033[0m"

read -p "请输入需要链接的主机:"  num

echo $num

case $num in

    1)
    	ssh 172.16.1.7
    ;;

    2)
    	ssh 172.16.1.8
    ;;

    3)
    	ssh 172.16.1.31
    ;;

    4)
    	ssh 172.16.1.41
    ;;

    q)
    	exit;
    ;;

    *)

    echo -e "\033[31m 输入错误!!! \033[0m"
    ;;
esac

done


  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值