SSH远程登陆管理

本文详细介绍了SSH(Secure Shell)远程登录管理,对比了SSH与telnet的区别,强调了SSH的数据加密安全性。内容包括telnet服务的安装与运行、使用wireshark检测网络流量,以及SSH的常用命令,如ssh远程登录、scp文件复制和sftp数据传输。此外,还探讨了如何通过ssh-keygen和ssh-copy-id实现无密码登录,并提供了自动化脚本示例,以实现批量配置和验证SSH连接。
摘要由CSDN通过智能技术生成

SSH远程登陆管理

ssh基本概述

SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输,确保了数据传输安全,那ssh服务主要功能有哪些呢?
1.提供远程连接服务器的服务;
2.对传输的数据进行加密

SSH与telnet

那么除了SSH协议能提供远程连接服务,Telnet也能提供远程连接服务,那么分别是什么呢?
ssh服务会对传输数据进行加密,监听在本地22/tcp端口,ssh服务默认支持root用户登录;
Telnet服务不对数据进行加密,监听在本地23/tcp端口,Telnet默认不支持root用户登录;

协议 端口
ftp tcp/20 tcp/21
ssh tcp/22
telnet tcp/23
http tcp/80
https tcp/443
dns tcp/53 udp/53
mysql 3306
rdp 3389
rpc 111
redis 6379
smtp 25

安装telnet服务并运行

[root@web01 ~]# yum install -y telnet-server
[root@web01 ~]# systemctl start telnet.socket

使用wireshark检测vmnet8网卡上telnet的流量

使用wireshark检测vmnet8网卡上telnet的流量

在这里插入图片描述

telnet无法使用root用户登录linux 系统,需要创建普通用户

[root@web01 ~]# useradd lcc
[root@web01 ~]# echo '1' | passwd --stdin lcc
Changing password for user lcc.
passwd: all authentication tokens updated successfully.

 
 
 
  • 1
  • 2
  • 3
  • 4

使用普通用户进行telnet登录

在这里插入图片描述

搜索wireshark 包含telnet相关流量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分析ssh流量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SSH相关命令

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

ssh远程登录服务器命令示例

[root@web01 ~]# ssh -p22 root@10.0.0.41
root@10.0.0.41's password: 
Last login: Fri Jul 26 10:53:10 2019 from 10.0.0.7
[root@backup ~]# 

-p 指定连接远程主机的端口,默认22端口可省略

root@10.0.0.41

“@”前面为用户,如果当前用户连接可以不指定用户

“@”后面为要连接的服务器ip

scp复制数据至远程主机命令(全量复制)

scp  与  rsync远程传输方式类似
覆盖式 增量  

-P 指定端口,默认22端口可不写

-r 表示递归拷贝目录

-p 表示在拷贝文件前后保持文件或目录属性不变

-l 限制传输使用带宽(默认kb) /8 ->KB /1024 ->MB

#拉、下载:将远程172.16.1.31服务器/etc/exports文件拉取到本地/data目录
[root@web01 data]# scp -P22 -rp root@172.16.1.31:/etc/exports /data/
root@172.16.1.31’s password:
exports 100% 64 41.0KB/s 00:00
[root@web01 data]#

#推、上传:将本地/data/exports文件推送至远程服务器172.16.1.31的/data目录
[root@web01 data]# scp -P22 -rp /data/exports root@172.16.1.31:/data/
root@172.16.1.31’s password:
exports 100% 64 28.6KB/s 00:00
[root@web01 data]#

#限速
[root@web01 data]# dd if=/dev/zero of=/data/1.txt bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 3.16385 s, 166 MB/s
[root@web01 data]# ll -h /data/
total 501M
-rw-r–r-- 1 root root 500M Jul 26 14:23 1.txt
-rw-r–r-- 1 root root 64 Jul 23 17:01 exports
[root@web01 data]# scp /data/1.txt root@172.16.1.31:/tmp
root@172.16.1.31’s password:
1.txt 91% 455MB 53.2MB/s 00:00 E1.txt 100% 500MB 50.0MB/s 00:10
[root@web01 data]#
#限速为8096,换算为MB,8096/8=1024k=1M
[root@web01 data]# scp -l 8096 /data/1.txt root@172.16.1.31:/tmp
root@172.16.1.31’s password:
1.txt 13% 68MB 1.0MB/s 07:14 ETA
[root@web01 data]#
1.scp通过ssh协议加密方式进行文件或目录拷贝 2.scp连接时的用户作为拷贝文件或目录的权限 3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低

Sftp远程数据传输命令

-1:指定使用协议版本1。
-C:启用压缩。
-v:提高登录水平(打印更多的debug信息)。
-B:指定sftp传输使用的缓存大小,默认值为32768bytes。
-b:通过指定脚本,调用脚本命令,而不是在shell命令行输入命令。
-F:设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1),如[root@localhost tmp]# sftp -F /tmp/test root@192.168.1.222
-o:指定配置信息,如[root@localhost /]# sftp -o Port=22 root@192.168.1.222
-P:Connect directly to a local sftp server (rather than via ssh(1)). This option may be useful in debugging the client and server.
-R:指定同一时刻有多少请求,默认为64。增加该参数可以轻微的提高传输速度,不过会占用更多的内存。
-S:指定用于加密连接的程序,如ssh。
-s:subsystem | sftp_server

 sftp [user@]host[:dir[/]]:默认情况下登录到远程的/root目录。指定目录的话,如/opt,则登录到远程/opt目录
    例如:
[root@localhost /]# sftp root@192.168.1.222:/opt
    sftp [user@]host[:file ...]:直接下载远程文件到本地
    例如:
[root@localhost /]# sftp root@192.168.1.222:/opt/testfile.txt
 默认可以通过sftp命令连接sftp服务
[root@web01 data]# sftp root@10.0.0.31
root@10.0.0.31's password: 
Connected to 10.0.0.31.
sftp>


查看本台服务器路径(命令前加l)
[root@web01 data]# sftp root@10.0.0.31
root@10.0.0.31's password: 
Connected to 10.0.0.31.
sftp>
sftp> lpwd
Local working directory: /data
sftp> lls
sftp>


查看远程服务器路径[默认用户家目录]
[root@web01 data]# sftp root@10.0.0.31
root@10.0.0.31's password: 
Connected to 10.0.0.31.
sftp>
sftp> pwd
Remote working directory: /data
sftp> ls
exports  
sftp>


sftp使用get下载文件至本地服务器
格式为:get 远程机器路径 当前机器路径
sftp> get /data/exports /data/
Fetching /data/exports to /data/exports
/data/exports                                        100%   64     8.5KB/s   00:00    
sftp> lls
exports
sftp> 


 sftp使用put上传文件至远程服务器
格式为:put 当前机器路径 远程机器路径
sftp> put /data/put.txt /data/
Uploading /data/put.txt to /data/put.txt
/data/put.txt                                        100%    0     0.0KB/s   00:00    
sftp> ls
exports  put.txt  
sftp>

 

SSH验证方式

基于账号密码远程登录

[root@web01 ~]# ssh root@172.16.1.61
The authenticity of host '172.16.1.61 (172.16.1.61)' can't be established.
ECDSA key fingerprint is SHA256:5BsWOqUTowAsb7pKpfPSX3D/aENFyhCY/m2NJG9Q3Bo.
ECDSA key fingerprint is MD5:7b:4a:5f:92:07:9b:c4:c4:aa:65:9d:e2:68:11:f4:1d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.61' (ECDSA) to the list of known hosts.
root@172.16.1.61's password: 
Last login: Fri Jul 26 15:39:03 2019 from 10.0.0.1
[root@m01 ~]#

基于密钥远程登录

通过SSH协议,用户可以通过终端机访问和使用远程linux服务器,ssh的端口为22。但每次进行连接都要输入密码。如果管理几台到十几台集群,那可以应付的的过来。如果集群增加了几百,上千台。那么使用SSH管理起来就不方便了。
默认情况下,通过ssh客户端命令登录远程服务器,需要提供远程系统上的账号密码,但为了降低密码泄露的几率和提高登录的方便性,建议使用秘钥验证方式。
在这里插入图片描述

在服务器上生成非对称秘钥
# -t  指定秘钥类型
# -C  指定用户邮箱
[root@m01 ~]# ssh-keygen -C linhaoda0225@sina.com
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:nxa7encEsG4V6vNDcBB6qn5A3VunbGJRUCKBz231ZQE linhaoda0225@sina.com
The key's randomart image is:
+---[RSA 2048]----+
|       .o.++.E...|
|      .  oo.+   o|
|       +.o.B o o |
|      . +oO = o  |
|     .  S+.O +   |
|      .. .O+= .  |
|      .. o=* .   |
|     .  ....+ .  |
|      ...o.. o   |
+----[SHA256]-----+
[root@m01 ~]# ll .ssh/
total 8
-rw------- 1 root root 1679 Jul 26 16:28 id_rsa
-rw-r--r-- 1 root root  403 Jul 26 16:28 id_rsa.pub
[root@m01 ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/gfWoiOd30VGftSp8YIqNqweUClvUI7dGw4Is/VxPdlndseoAFAsjVRDyQ84kdSgddy2vII0rjnWd1ILWOvMl7YJU2G1UO4hbhL9X14dq+XBibwQ/Chb2JDMJSMKRi1jVJyQPUgAnpYW2n5qIdmk0CVxLBo7HX53IO0j86WY6XsKMsA57UwpaH9oK9sXiH/SRhK6z/Y5FI9EVU35GCiDgHu6vk0uksIPwqE9e8Zw+S6xrYJ6RmHKYGwSNqRB1UKfIUQI3pQZz8ieyw7O9i5fzMNValL/U6j7LoGYNbJXvdL4IWVgHvgR7EqALC3pGTAeUiQ5YNGvgKm9yd3fA0C1f linhaoda0225@sina.com
[root@m01 ~]#
 
将公钥推送到你需要连接的主机,第一次需要输入对端主机的密码
#命令示例: ssh-copy-id [-i [identity_file]] [user@]machine
ssh-copy-id #命令
-i          #指定下发公钥的路径
[user@]     #以什么用户身份进行公钥分发(root),如果不输入,表示以当前系统用户身份分发公钥
machine     #下发公钥至那台服务器, 填写远程主机IP地址

#分发秘钥,[将A服务器的公钥写入B服务器~/.ssh/authorized_keys文件中]
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41

直接连接无需密码则表示密钥已配置成功
#远程登录对端主机方式
[root@m01 ~]# ssh root@172.16.1.41
[root@nfs ~]#

#不登陆远程主机bash,但可在对端主机执行命令
[root@m01 ~]# ssh root@172.16.1.41 "hostname -i"
172.16.1.41

SSH场景实践

实践场景:用户通过Windows/Mac/Linux客户端连接跳板机免密登录,跳板机连接后无外网的Linux主机免密登录,架构图如下:
实践多用户登录一台服务器无密码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值