U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > bios设置U盘启动 >

Linux ssh协议

来源:http://www.tudoupe.com时间:2022-08-01

基础知识

ssh:secure shell protocol,安全的远程登录

功能:是基于应用程序层的安全协议,它在数据传输过程中实现数据加密,取代了缓冲协议

使用tcp协议,22号端口

ssh服务的具体软件实现:
openSSH

dropbear

OpenSSH:ssh协议的开源实现,linux(centos、ubuntu等)默认使用的是openssh来实现ssh这个服务的

dropbear:在ssh协议中实现另一个开放源代码项目
ssh的通信过程:
第一个连接需要交换公共钥匙

客户端发起请求

服务器将自己的公共密钥返回到客户端,并生成对话ID

客户端生成一个密钥对:变形或计算其自己的公共密钥和សម័យID,然后使用服务端的公共密钥加密变形或计算的值

它到达加密数据后,服务端使用自己的私钥解密数据

服务端使用解密后取得的数据和对话ID来分离或计算从客户端取得的公共密钥(服务器从客户端获取公共密钥)

最后,双方都持有三个秘密密钥,各自的公共密钥、私人密钥和对方的公共密钥,所有随后的通信将被加密

服务器的公共键被显示为磁盘文件

客户端的公开密码暂时生成(连接时自动生成公开密码)
ssh加密通信原理
如果A和B通信,A是客户端,B是服务端
A—>B
客户A使用服务点B的公共密钥加密数据,而服务点B使用自己的私人密钥解密数据

B—>A
流程和A—>B的流程是一样的

#第一个连接将生成使用Hash算法的目标主机公共密钥的摘要,需要手动确认当前连接的机器是想要连接的目标主机
#确认后将自动下载对方的公开密码,下次重新连接时,你可以确定是第一次访问的同一个主机。

#其他公共密钥存储位置:
当前用户的家目录包含一个隐藏的文件夹 ssh,该文件夹包含一个叫做 known_hosts的文件夹,该文件夹记录远程主机的公共键。

#拿到公钥的好处:
如果下次您访问一个假主机(相同的IP地址等),系统将能够检测它。

#新的机器地址和旧地址一样,只需要删除旧机器对应的公钥文件就可以重新连接上去了 .ssh/known_hosts里面
openssh服务
OpenSSH是安全SHell协议的免费开放源代码实现,它通常在不同的Linux版本中默认安装,基于C/S结构

Openssh软件包组成:
openssh

openssh-clients:具有D的服务器配置文件,没有D的客户端配置文件

openssh-server:这个包定义了服务器配置文件

#您可以使用rpm-ql包名查看包内容

服务端:
[root@Centos8 CA]# rpm -ql openssh-server
/etc/pam.d/sshd #服务端口程序
/etc/ssh/sshd_config #Service端配置文件
/etc/sysconfig/sshd

服务结束的相应的单元文件:/usr/lib/systemd/system/sshd.service

客户端:
[root@Centos8 ~]# rpm -ql openssh-clients
/etc/ssh/ssh_config # 客户端的配置文件,可以更改默认端口,公共键检查等。
/etc/ssh/ssh_config.d
/etc/ssh/ssh_config.d/05-redhat.conf
/usr/bin/scp
/usr/bin/sftp
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan

Openssh客户端
Linux客户端:ssh, scp, sftp, slogin #linux openssh-clients常用的工具

Windows Client: xshell, MobaXterm, putty, securecrt, sshsecureshellclient
客户端 ssh命令
ssh命令:是ssh客户端的一个工具,允许实现对远程系统经验证地加密安全访问

#ssh客户端配置文件:
/etc/ssh/ssh_config
ssh命令使用格式
ssh [user@] host [COMMAND] 或 ssh -l user host [COMMAND]
#之后添加命令,以执行远程主机上的相应命令

选项:
-p端口 #指定用于openssh-server的端口

-X #支持x11传输(远程显示的图形界面显示在机器上(只要两者都是图形界面))

-t #强制伪造tty分配,间接连接到目标主机
#例如: ssh -t remoteserver1 ssh -t remoteserver2 ssh remoteserver3

-o 选项 # 例如: -o StrictHostKeyChecking=no # 表示您不需要在登录时直接下载公共钥匙时确认

-i #指定一个私有密钥文件路径来实现基于密钥的认证和默认文件使用: ~/.ssh/xx
例如:使用窗口显示Linux的图形工具
使用x协议, x协议用于实现图形处理。
#窗口的图形界面是与操作系统结合的,Linux的图形界面只是一个组成部分,而不是操作系统本身。
x_server组件:真正绘制图的服务器组件
x_client组件:图形界面客户端,例如Firefox

#使用窗口显示Linux图形工具
在Linux上安装x_client,在Windows上安装x_server。
在linux运行客户端软件,通过x协议发送給windows的服务器,实现了windows显示linux上的图像。

#windeows的x_server软件:xmanager(多于使用)
Linux的x_client:firefox
如何验证ssh登录
口令验证

密钥验证

口令验证

  1. 客户端启动ssh请求,服务器将其公共密钥发送给用户

  2. 用户根据服务器发送的公共密钥加密密码

  3. 加密后,信息被发送回服务器,服务器用自己的私钥解密。如果密码正确,用户会成功地登录
    密钥验证实现方式
    每次连接时,您不需要输入密码才能互相连接。您可以直接连接

  4. 首先在客户端上生成一对键(ssh-keygen)(公共键、私人键)

  5. 客户端的公钥通过ssh-copy-id命令拷贝到服务端,存放在(authorized_keys)这个文件中

  6. 客户端再次发送连接请求,用客户端公开密钥加密并将其传递给客户端

4.客户端收到加密文件后用私钥解密,并将加密的字符发送到服务器的公共键(第一个登录)进行加密

5.服务端通过解密自己的私钥取得结果。 通过对比字符串启用安全登录
基于键的登录方法的实施实施过程
1.客户生成的键对

2.用户将公共钥匙复制到服务端

1.ssh-keygen:默认的直接返回生成一个公共密钥私钥到一个文件,使用这个非对称加密算法叫rsa

-f:指定公共密钥私钥存储的路径,并不指定默认的ssh隐藏文件在主目录中。
-t:指定加密算法
-p: 指定密码

2.ssh-copy-id -i公共密钥文件路径目标主机

自动复制到该文件中的ssh目录中的目标主机size.authorized_keys(不会自动创建)
范例
#使用sshpass工具实现非交互的登录:(通常用于脚本)

sshpass:执行命令提交

前提:要实现与另一方的远程通信,你需要将另一方的公开密钥添加到自己的ssh/known_hosts文件中

[root@centos8 ~]# sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@10.0.0.8 #在访问对方的时候就不需要输入密码了

#非交互式实现公共键的复制
sshpass -p 123456 ssh-copy-id -i Host's public key -o StrictHostKeyChecking=no (需要远程主机复制)
#例:基于关键验证脚本的多个主机批量部署
#!/bin/bash #添加shebang机制
HOSTS=" #指定需要远程连接的主机的IP地址
10.0.0.6
10.0.0.7
10.0.0.18
10.0.0.28
"
PASS=redhat #用于存储这些主机的密码
[ -f /root/.ssh/id_rsa ] || ssh-keygen -P “” -f /root/.ssh/id_rsa &> /dev/null #如果有私钥了就不用再创建了
apt -y install sshpass &> /dev/null #如果没有安装sshpass就安装
用于$HOSTS;do中的i#循环IP地址
{
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub $i &> /dev/null #使用非交互式的方式来将自己的公钥拷贝过去 -i:指定私钥的路径
}& #后台并行执行
done
wait
#在多个主机之间实现基于彼此的钥匙验证
生成在ssh中存储的键 - keygen # 默认。

2.将自己的私钥文件保存到自己的authorized_keys文件中。 ssh-copy-id 127.0.0.1

3.使用 rsync工具切换。 整个ssh文件被复制到所有目标主机

# 例如: rsync - av.ssh serverhost/.ssh/root

#原则是每个人都共享一个公共和私人密钥对,因为使用ssh-keygen生成一个在ssh中的/.Authorized_keys存储自己的公共密钥的密钥对(他们信任自己)
在生成键对时指定密码: ssh-keygen -P.你不想下次离开时输入这个密码,
您可以使用ssh-agentbash来打开代理,然后将私钥密码传递给代理

ssh-keygen -p

ssh-agent bash #是一个可执行的后端程序
ssh-add #将传递密码给代理人,下次您不需要手动输入密码
其他ssh客户端工具
它们都是基于ssh协议开发的ssh_client工具

scp

rsync

stfp

scp:远程复制在多个主机上
格式:
scp[选项]源文件目标文件
scp [选项] /source_file [user@]remote_houst/dest_file
scp [选项] [user@]remote_houst/dest_file /source_file

选项:
-r:复制文件夹
-P PORT 指明remote host的监听的端口

#复制目录文件背后存在非线性区分
斜坡:复制文件夹的内容
不倾斜:复制整个文件夹
rsync:数据更新(增加备份)
主要用于实现数据备份和数据更新。

工具源:rsync包
#双方需要安装rsync

#选项:
-a:保留源文件的属性,但是无法保留acl和selinux属性 -a选项自带递归的功能
-v:显示详细过程
–delete:保证两边的数据一样,如果目标文件存在某个源文件没有的文件,就会把目标文件的这个文件删除掉

rsync -av /etc server1:/tmp #复制目录和目录下文件
rsync -av /etc/ server1:/tmp # 只复制文件在目录下作为 scp

rsync -av --delete source_file host:/dest_file | dest_file #可以是 host-to-host备份或本地备份

sftp:交互式文件传输工具
该方法与ssh工具相似。

ssh服务器端配置
服务器端的相应程序名称:sshd

服务器端配置文件:/etc/ssh/sshd_config

服务器端配置帮助: man 5 sshd_config
港口 # 港口编号, 生产建议修改
ListenAddress ip
LoginGraceTime 2m
PermitRootLogin yes #默认ubuntu不允许root远程ssh登录
StrictModes yes #检查.ssh/文件的所有者,权限等
MaxAuthTries 6 #pecifies the maximum number of authentication
attempts permitted per connection. Once the number of failures reaches half this
value, additional failures are logged. The default is 6.
MaxSessions 10 # 最大连接数
PubkeyAuthentication yes #基于key验证
PermitEmptyPasswords no #空密码连接
PasswordAuthentication yes #是否支持密码验证
GatewayPorts no
ClientAliveInterval 10 # 单位: 秒
ClientAliveCountMax 3 默认3
使用DNS是 #更改为不,不常使用,可以加速ssh连接
GSSAPIAuthentication yes # 加速可以更改为不
MaxStartups # 未认证的连接最大值,默认值10
Banner /path/file
#下面是如何限制用户访问性:
AllowUsers user1 user2 user3
DenyUsers user1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2
ssh服务配置最佳做法
建议使用非默认端口
禁止使用protocol version 1
限制可登录用户
设置免费聊天的截止时间
使用防火墙设置ssh访问策略
只听特定IP地址
基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
使用基于密钥的认证
禁止使用空密码
禁止根用户直接登录
限制访问频率和联机 ssh 的数量
经常分析日志
范例:
#设置ssh免费60年代自动取消
Vim /etc/ssh/sshd_config

Service sshd restart
#注:只有一个新的连接是有效的
#解决ssh登录缓慢的问题
vim /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
#在ubuntu上启用根远程ssh登录
#修改sshd服务配置文件
vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password 注意此行
PermitRootLogin是修改到以下格式
ssh客户端的配置
客户端名称:ssh

配置文件:
/etc/ssh/ssh_config # 客户端的配置文件,可以更改默认端口,公共键检查等。
轻量自动运维化工具
sshfs

pssh

sshpass

下载远程ssh目录:
sshfs:由EPEL源提供,目前由CentOS8提供,可以使用ssh协议 लोड远程目录
轻型自动化操作工具pssh
#范例
sshfs: /data /mnt # 将远程主机的数据目录上传到本地mnt目录中
pash
pssh:批量管理的目标主机需要事先进行基于键的验证。 一个能够在多个服务器上执行命令并进行文件复制的工具,提供基于ssh和scp的多个平行工具

选项:
-H:指定远程管理的主机地址
-h文件:主机列表文件,内容格式"[user@]host[:port]"
-A:手动密码输入模式
-i:每个服务器内部处理的信息输出
范例
#默认使用ssh键认证,通过-A选项使用密码认证批量执行命令
pssh -H “192.168.1.10” -A hostname

#多台主机
pssh -H “192.168.1.10 192.168.1.20” -i hostname

#多台主机
cat hosts.txt
10.0.0.8
10.0.0.6
pssh -h hosts.txt -i hostname

#将标准错误和标准正确地重新分配到本地主机的/data/stdout和/data/stderr目录
pssh -H 192.168.1.10 -o /data/stdout -e /data/stderr -i “hostname”

-o:输出文件目录
-e:错误输出文件

#在使用pssh时,例如*的变量需要用单个引用来封装
pscp.pssh命令
将本地文件批量复制到远程主机

#选项:
-v 显示复制过程
-r 递归复制目录

#将本地curl.sh 复制到/app/目录
pscp.pssh -H 192.168.1.10 /root/test/curl.sh /app/
pscp.pssh -h host.txt /root/test/curl.sh /app/

#将多个本地文件批量复制到/app/directory
pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh /app/

#复制本地目录批量到/app/directory
pscp.pssh -H 192.168.1.10 -r /root/test/ /app/
pslurp命令
复制远程主机的文件批量到本地

#将目标服务器的密码文件载入/app,并重新命名用户
pslurp -H 192.168.1.10 -L /app /etc/passwd user

#选项
-L指定从远程主机下载到主机存储的目录。本地是下载到本地之后的名称
-r 递归复制目录

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息