ssh远程服务

一、ssh协议简介

SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢?

1、提供远程连接的服务
linux远程连接: ssh telnet
windows的远程连接: RDP (remote desktop)、向日葵、teamviewer
2、对传输数据进行加密

二、ssh和telnet

1.使用telnet连接服务器

#安装telnet服务
[root@nfs ~]# yum install -y telnet-server

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

#telnet只支持普通用户登录,创建用户
[root@nfs ~]# useradd lhd
[root@nfs ~]# echo 123 | passwd --stdin lhd
Changing password for user lhd.
passwd: all authentication tokens updated successfully.

#连接测试
[c:\~]$ 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: 123
[lhd@nfs ~]$ su -

2.区别

1.telnet:
1)不能使用root用户登录,只能使用普通用户
2)数据包没有进行加密,传输都是明文的

2.ssh:
1)可以使用任意用户登录
2)数据传输都是加密的

三、ssh相关命令

SSH有客户端与服务端,我们将这种模式称为C/S架构,ssh客户端支持Windows、Linux、Mac等平台。
在ssh客户端中包含 ssh|slogin远程登陆、scp远程拷贝、sftp文件传输、ssh-copy-id秘钥分发等应用程序

1.ssh命令

[root@web01 ~]# ssh root@172.16.1.31 -p 22

#命令拆分
ssh 			#命令
root			#系统用户(如果不写,就使用当前服务器的当前用户)
@				#分隔符
172.16.1.31		#远程主机的IP
-p 				#指定端口(终端不支持)
22				#端口(默认22)

-o StrictHostKeyChecking=no		#首次访问时不验证身份

2.scp命令

scp客户端命令:远程拷贝
类似于rsync,scp全量,rsync增量

scp支持推和拉
1.scp通过ssh协议加密方式进行文件或目录拷贝。
2.scp连接时的用户作为拷贝文件或目录的权限。
3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低。

1)scp推


#把当前目录下的hostname_ip.sh文件推送到172.16.1.31机器的/tmp目录下
[root@web01 ~]# scp hostname_ip.sh 172.16.1.31:/tmp

#注意:
	与rsync不同,推送时不论是加 / 还是不加 / ,推送的都是目录
	如果想推送目录下的文件,则使用 *

2)scp拉


[root@web01 ~]# scp 172.16.1.31:/tmp/1.txt ./

#注意:
	与rsync不同,拉取时不论是加 / 还是不加 / ,拉取的都是目录
	如果想拉取目录下的文件,则使用 *

3)常用参数


-P 指定端口,默认22端口可不写
-r 表示递归拷贝目录
-p 表示在拷贝文件前后保持文件或目录属性不变
-l 限制传输使用带宽(默认kb)

#指定端口
[root@nfs ~]# scp -P 2222  sersync2.5.4_64bit_binary_stable_final.tar.gz 172.16.1.7:/root

#递归拷贝目录
[root@web01 ~]# scp -r /etc/  172.16.1.31:/root
fstab                                                  100%  501   286.7KB/s   00:00    
crypttab                                               100%    0     0.0KB/s   00:00    
mtab                                                   100%    0     0.0KB/s   00:00    
resolv.conf                                            100%   51    22.8KB/s   00:00    
00_header                                              100% 8702    27.1KB/s   00:00    
01_users                                               100%  232    74.0KB/s   00:00    
10_linux                                               100%   11KB   3.6MB/s   00:00    
20_linux_xen                                           100%   10KB   3.2MB/s   00:00    
[root@nfs ~]# ll
total 720
-rw-r--r--  1 root root    128 Aug 17 16:49 2.txt.tar.gz
drwxr-xr-x 23 root root   4096 Aug 17 20:11 etc

[root@web01 ~]# scp -r /etc/*  172.16.1.31:/root
abrt-action-save-package-data.conf                    100%  850     7.8KB/s   00:00    
abrt.conf                                             100% 2118     1.0MB/s   00:00    
gpg_keys.conf                                         100%   31    11.9KB/s   00:00    
xorg.conf                                             100%  175    15.9KB/s   00:00  
[root@nfs ~]# ll
total 880
drwxr-xr-x 3 root root    101 Aug 17 20:15 abrt
-rw-r--r-- 1 root root     16 Aug 17 20:15 adjtime
-rw-r--r-- 1 root root   1518 Aug 17 20:15 aliases
-rw-r--r-- 1 root root  12288 Aug 17 20:15 aliases.db
#注意:
  与rsync不同,推拉数据时不论是加 / 还是不加 / ,推拉数据的都是目录及目录下的文件
  如果只想推拉目录下的文件,则使用 *

#限制传输带宽
[root@web01 /tmp]# scp -l 8096 1.txt 172.16.1.31:/tmp/
root@172.16.1.31's password: 
1.txt    12%   64MB   1.0MB/s   07:19 ETA

3.sftp命令

1)终端连接



[C:\~]$ sftp root@10.0.0.31


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

Your current local directory is
C:\Users\zhang\Documents\NetSarang Computer\7\Xshell\Sessions

Type `help' to browse available commnands.
sftp:/root> 


2)服务器之间连接


#连接
[root@web01 ~]# sftp root@172.16.1.31
root@172.16.1.31's password: 
Connected to 172.16.1.31.

#操作远程连接过去的机器
sftp> pwd
Remote working directory: /root
sftp> ls -l
-rw-------    1 root     root         1429 Jul  6 02:17 anaconda-ks.cfg
-rw-r--r--    1 root     root          497 Aug  5 20:15 hostname_ip.sh
-rw-r--r--    1 root     root       727290 Aug 15 01:15 sersync2.5.4_64bit_binary_stable_final.tar.gz

#如果想操作本机,则在命令前加一个 l
sftp> lls -l
total 8
-rw-r--r--  1 root root    0 Aug 18 00:25 1.txt
-rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
-rw-r--r--. 1 root root  497 Aug  5 20:15 hostname_ip.sh

#拉取命令
sftp> get 1.txt ./
#当使用拉取命令的时候,前面的是远程服务器,后面的是本地服务器

#推送命令
sftp> put 1.txt ./
#当使用put的时候,前面的是本地服务器,后面的是远程服务器

5)文件传输工具

图形化工具
1.xftp
2.filezilla
3.flashfxp

4)命令对比

1.rz/sz:
1.不能上传4G以上的文件
2.不能断点续传
3.不能上传文件夹

2.sftp:
1.能上传大于4G的文件
2.能断点续传
3.可以上传文件夹

四、SSH验证方式

1.方式一:基于用户名密码远程连接

#需要知道服务器的IP,端口,系统用户,用户密码才能链接远程主机
[root@nfs ~]# ssh root@172.16.1.7 -p 2222
root@172.16.1.7's password: 
Last login: Tue Aug 18 00:44:33 2020 from 10.0.0.1
[root@web01 ~]#

#设置密码
1.复杂的密码(容易忘记)
2.简单的密码(容易被破解)
3.每台机器密码都不一样
4.密码是动态的
5.密码三个月一变
6.密码错误三次,锁定用户
7.密码肯定是没有规律的

2.基于秘钥的方式

默认情况下,通过ssh客户端命令登陆远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式

1)生成秘钥对


[root@web01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
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:n618dqJXK1Z1mvHcv31VadZTBwni3gXEghWSp9+HTj4 root@web01
The key's randomart image is:
+---[RSA 2048]----+
|        .++++..o |
|        ooo.... o|
|         o..  . =|
|        .. . ..==|
|        S.....oB=|
|         ..o+ * =|
|          o+.+ .o|
|         . .E o +|
|          +* = .+|
+----[SHA256]-----+
[root@web01 ~]#

2)将公钥发送至要免密登录的服务器

方式一:手动复制
#查看公钥
[root@web01 ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbOLFAuHJy6xtGOBFIWALpyWNyR3ixgULtv9uVMELre1iVv6S/fBT3YqKR6naX1y1oyhWBD6njMhXDANuG9OQ/ABTHrgOJrF5JMY1AS9jI5DrMaIdfoBXcmck6RuID5yddlLiA6VdeHI8ndtth7bu6Ed50otviNbzF7NG7chX9oGbju6uGMY12pb0BKCtJaJ9qycGJOZCi8OyrIycJBexsiC+DYOwvXjmtdRtf7KNBnHSDDEIsywQNku1/WXUE0l4CMoZ/zjgO19fdxfdbCT4qAWTz0r9CDUzhEFIVZgz73KLahy+IXIhNupHXf0VcrS3h11rWDUrOeIw2oIZHEPz3 root@web01

#将公钥写到要连接的机器  确定是一行内容
[root@nfs ~]# vim .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbOLFAuHJy6xtGOBFIWALpyWNyR3ixgULtv9uVMELre1iVv6S/fBT3YqKR6naX1y1oyhWBD6njMhXDANuG9OQ/ABTHrgOJrF5JMY1AS9jI5DrMaIdfoBXcmck6RuID5yddlLiA6VdeHI8ndtth7bu6Ed50otviNbzF7NG7chX9oGbju6uGMY12pb0BKCtJaJ9qycGJOZCi8OyrIycJBexsiC+DYOwvXjmtdRtf7KNBnHSDDEIsywQNku1/WXUE0l4CMoZ/zjgO19fdxfdbCT4qAWTz0r9CDUzhEFIVZgz73KLahy+IXIhNupHXf0VcrS3h11rWDUrOeIw2oIZHEPz3 root@web01

:set nu

#授权  
[root@nfs ~]# chmod 700 .ssh/
[root@nfs ~]# chmod 600 .ssh/authorized_keys

#连接测试
[root@web01 ~]# ssh 172.16.1.31
Last failed login: Tue Aug 18 00:51:38 CST 2020 from 10.0.0.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Aug 17 23:39:28 2020 from 172.16.1.7
[root@nfs ~]# 

方式二:命令推送公钥

#命令推送公钥
[root@web01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.41
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '172.16.1.41 (172.16.1.41)' can't be established.
ECDSA key fingerprint is SHA256:DSSVPKabAySXUwVqCslB99KIQCnm915+IeT6b/nKDZw.
ECDSA key fingerprint is MD5:a1:1b:dc:78:57:44:7a:33:42:6a:1c:57:f5:ca:45:b6.
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.41's password: 

Number of key(s) added: 1

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

#连接测试
[root@web01 ~]# ssh 172.16.1.41
Last login: Mon Aug 17 14:35:17 2020 from 10.0.0.1
[root@backup ~]# 

如果还是出现ssh免密连接需要密码 解决

#要连接的机器
[root@nfs ~]#  vim /etc/ssh/sshd_config
#StrictModes yes

修改为
StrictModes no

#保存退出并重启sshd服务
[root@nfs ~]# systemctl restart sshd

巡检脚本


#1.巡检脚本
[root@m01 ~]# vim xunjian.sh 
#!/bin/bash
ip='
7
31
41
'
for i in `echo $ip`;do
     echo "###############172.16.1.$i##############"
     ssh root@172.16.1.$i "$1"
done

#2.巡检脚本
[root@m01 ~]# cat all.sh 
#!/usr/bin/bash
[ $# -ne 1 ] && echo "请输入执行的命令" && exit 1

for i in 31 41
do
    echo "#########172.16.1.$i#####"
    ssh root@172.16.1.$i "$1"
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值