• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

【Linux运维架构】SSH服务远程管理项目实战

Linux架构 lixian 4年前 (2020-02-19) 917次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、ssh的概念

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

1. SSH服务主要功能:

(1).提供远程连接服务器的服务
linux远程连接协议:ssh 22 telnet 23
windows远程连接协议:RDP(remote desktop)3389
(2).对传输进行加密

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

3.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远程登录实战

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 ~]# 

#企业ssh服务密码设置要求
1.复杂的密码:yonghu_12@31_sysnum(记不住)
2.简单的密码:123(容易被破解)
3.每台服务器密码不一样
4.密码三个月更换一次
5.输入密码错误三次自动锁死
6.密码有key,30秒一变或者1分钟一变

2:基于秘钥的方式远程登录

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

流程图:
【Linux运维架构】SSH服务远程管理项目实战

大概的意思就是跳板机相当于一个管理机,在管理机上向每个服务器或者客户端发放一个锁,这个锁都是一模一样的,然后管理机有这个锁的钥匙,客户端或服务器上配置锁,就可以实现在管理机上用秘钥方式登录每个服务器或客户端了。

1.在跳板机上生成秘钥对
生成的秘钥对在当前用户家目录下面的.ssh目录下id_rsa文件和id_rsa.pub文件

[root@m01 ~]# ssh-keygen 
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:iULhx6BId6WORBUU6Y4o4naeb9Rm7hC9PmbWAloZ05M root@m01
The key's randomart image is:
+---[RSA 2048]----+
| . o=*=.         |
|..oo.=.          |
|. ..+.+ .        |
|  ..o=.E .       |
|  ..+o*.S        |
|o. . B.+.        |
|+   +.=..        |
| o o..oB .       |
|. ooo.=oo        |
+----[SHA256]-----+
[root@m01 ~]# 

2.服务器建立锁
(1).公钥内容就是跳板机生成秘钥的id_rsa.pub文件里的内容,首先在家目录创建.ssh目录并赋予700权限,然后在.ssh目录下创建authorized_keys文件并赋予600权限,之后再将跳板机生成秘钥的id_rsa.pub文件里的内容复制到authorized_keys文件里。
authorized_keys文件就相当于一把锁。

[root@web01 ~]# mkdir .ssh/
[root@web01 ~]# vim .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvokaPfSni0HC+tppFKrKuYrSH41D1Y35Qi3cfJm7Yl7jtnhN/E2bHaRxlx4Sff+ueLhS4IiewPwdywg/iG77HA8TIPBgnoW62PecNeuDn322KDo3qTzBMjmXIY6AT4D2sDpEjhhN7JmeQ/uSKaGAQQUMcnW2YRPwgaFCZEGR5XjeD7BQAGxBYsx6TjFKOn55WfKBFHLQSO3jXv+2y1yil0s3hK7iBhiCCMRc34oBgMh1aMZQekUf8CgUlSwtR3RdgKzKP68L5R/ggmZzGYZ5UOstJd0Vw1I14kZEaBHIF734tdNYbEcv8CXFku1iQzKrwkIs4FX7k3TxogI4XcE+/ root@m01
[root@web01 ~]# chmod 700 .ssh/
[root@web01 ~]# chmod 600 .ssh/authorized_keys

或者直接用下面的ssh推送的方法把秘钥推送过去
(2).命令推送公钥(与上面的方法二选其一)

[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@m01 ~]# ssh 172.16.1.31
Last login: Tue Feb 18 12:14:27 2020 from 172.16.1.7

三、SSH安全优化

SSH作为远程连接服务,通常我们需要考虑到服务的安全,所以需要对服务进行安全方面的配置。
1、更改远程登陆的端口
2、禁止root管理员直接登录
3、密码认证方式改为秘钥认证
4、重要服务不适用公网IP地址
5、使用防火墙限制来源IP地址

[root@web01 ~]# vim /etc/ssh/sshd_config
Port 4399					  # 修改sshd服务的默认端口
PermitRootLogin no			   #  禁止使用root登录服务器
PasswordAuthentication no		# 禁止使用密码登录
UseDNS                  no      # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication    no      # 禁止GSS认证,减少连接时产生的延迟

四、SSH服务相关命令

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

1.scp命令(远程文件传输)

scp客户端命令:远程拷贝
scp类似于rsync命令,但scp传输命令是全量,而rsync传输是增量

scp支持推和拉
#推:将本地的/etc目录推送到backup服务器的/tmp目录下

[root@nfs ~]# scp -r /etc/ root@172.16.1.41:/tmp/

#将本地的/etc目录下的文件推送到backup服务器的/tmp目录下

[root@nfs ~]# scp -r /etc/* root@172.16.1.41:/tmp/

#拉:将远端172.16.1.41服务器的/etc目录拉取到本地的/tmp目录下

[root@nfs ~]# scp -r root@172.16.1.41:/etc /tmp/

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

限速 -l 参数 单位是 kb

[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/

2.sftp命令

[root@web01 ~]# sftp root@10.0.0.31  #文件传输命令
sftp> ls  #查看连接后服务器
sftp> lls   #查看本地服务器
sftp> get 1_nfs.gif ./   #格式:下载命令     远程服务器文件   本地服务器位置
sftp> put /data/1_nfs.gif /tmp/    #格式:上传命令     本地服务器文件   远程服务器位置

sftp和rz命令的区别:
sftp:
1.能上传文件夹
2.能支持断点续传
3.支持上传大于4G的文件

rz:
1.不能上传文件夹
2.不支持断点续传
3.只能上传小于4G的文件


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:【Linux运维架构】SSH服务远程管理项目实战
喜欢 (1)

您必须 登录 才能发表评论!