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 
06@ssh服务的使用及配置

四、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 "yesr"; exp_continue}              "password:" {send "$passr"}  }  expect "root@*"  {send "df -hr"} expect "root@*"  {send "exitr"} 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 "33[36m ########################################### 33[0m" echo -e "33[36m # 		欢迎登录 33[0m" echo -e "33[36m #       Linux 12   高级项目:跳板机 33[0m" echo -e "33[36m #         Date: 2021.04.23 33[0m" echo -e "33[36m #          Anther: hzl 33[0m" echo -e "33[36m ########################################### 33[0m"   while true; do  echo -e "33[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  33[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 "33[31m 输入错误!!! 33[0m"     ;; esac  done   

版权声明:玥玥 发表于 2021-04-25 2:45:21。
转载请注明:06@ssh服务的使用及配置 | 女黑客导航