当前位置:   article > 正文

SSH服务配置,ssh服务key验证,ssh堡垒机,xshell创建key验证,scp,rsync,sftp命令_堡垒机配置ssh

堡垒机配置ssh

1.SSH概述

ssh服务-----软件包(openssh-server)

ssh: secure shell, protocol, 22/tcp, 安全的远程登录
具体的软件实现
OpenSSH: ssh协议的开源实现,CentOS默认安装
dropbear:另一个开源实现
SSH协议版本
v1: 基于CRC-32做MAC,不安全;man-in-middle
v2:双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA实现身份认证
两种方式的用户登录认证
基于password
基于key
ssh加密通讯
在这里插入图片描述
基于用户名口令登录验证
在这里插入图片描述

2.Openssh软件组成

Openssh软件组成
Openssh 公共包
Openssh-clients 客户端包 ssh_config
Openssh-server 服务器包 sshd_config
工具:
基于C/S结构
Linux Client: ssh, scp, sftp,slogin
Windows Client:xshell, putty, securecrt, sshsecureshellclient
Server: sshd

3.安全性问题

安全远程登录----比telnet安全
第一次连接有风险
Ssh安全性—防止中间人攻击
假如有两个机器的ip和mac完全一样,第一次用ssh登录后,第二次登陆会出现警告,只要将/root/.sh/know_hosts删掉,就不会出现错误
在这里插入图片描述

4.ssh第一次登录的目的

第一次登录的目的就是将对方的公钥放到/root/.ssh/know_hosts文件中去
在这里插入图片描述

本机公钥在/etc/ssh/ssh_host_rsa_key.pub
在这里插入图片描述
所以说将/root/.shh/know_hosts删掉,就会认为是第一次登录

一.ssh客户端配置

SSH默认走22端口

客户端组件:
ssh, 配置文件:/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyChecking no 首次登录不显示检查提示
或者ssh -o “StrictHostKeyChecking no” IP
在这里插入图片描述
默认端口号----可以修改(修改完得重启服务service sshd restart)
远程登录要用-p指定新的端口号
在这里插入图片描述

格式ssh [user@]host [COMMAND] 如果不写user默认以当前身份登录
ssh [-l user] host [COMMAND]
在这里插入图片描述

ssh命令常见选项

-p port:远程服务器监听的端口(指定端口号
-b:指定连接的源IP(登录时,指定用哪个ip连接)
-v:调试模式
-C:压缩方式(网络比较远)
-X:支持x11转发(抓取图形页面)否则显示不了图片(依赖于xserver服务)
-t:强制伪tty分配(如果一组机器是单向连接)
ssh -v root@IP -v显示详细信息
ssh -n root@IP -n支持远程启动后台程序

在这里插入图片描述
在这里插入图片描述
-X例如centos6上的xclock
在这里插入图片描述
如果一组机器是单向连接(A–>B—C)而C拒绝A
-t(只要不是最后一个机器都加-t)
ssh -t host1 ssh -t host2 ssh host3
host3最后认为是host2在连接
在这里插入图片描述

允许实现对远程系统经验证地加密安全访问
当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub
(CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的
~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接

二.ssh服务登录验证

ssh服务登录验证方式
用户/口令
基于密钥
基于用户和口令登录验证
1 客户端发起ssh请求,服务器会把自己的公钥发送给用户
2 用户会根据服务器发来的公钥对密码进行加密
3 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,
则用户登录成功

1.基于用户口令登录验证

在这里插入图片描述

2.ssh服务基于密钥(key)登录验证

基于密钥的登录方式
1 首先在客户端生成一对密钥(对于用户)(ssh-keygen)
2 并将客户端的公钥ssh-copy-id 拷贝到服务端
3 当客户端再次发送一个连接请求,包括ip、用户名
4 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:magedu
5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
7服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

生成密匙,传输公钥到服务器得自己作)其他的是ssh协议完成
在这里插入图片描述

三. 基于key的ssh认证实现

基于密钥的认证:
(1) 在客户端生成密钥对
-t 指定加密算法(默认不写—rsa算法)
-f 输出的key路径
-P 提供口令

ssh-keygen -t rsa [-P ''] [-f “~/.ssh/id_rsa"]
  • 1

(2) 把公钥文件传输至远程服务器对应用户的家目录.ssh/authorized_keys
(这里如果将私钥传输
–也不会影响,他还是会把公钥给你传输过去)
-i 指定公钥文件

ssh-copy-id   [-i [identity_file]]   [user@]host
  • 1

ssh-copy-id -i /home/lizi/.ssh/id_rsa.pub root@192.168.245.128

(3) 测试
再去连接拷文件对方就不用输入密码
因为scp就是走的ssh服务
也可以直接执行命令

(4) 在SecureCRT或Xshell实现基于key验证
SecureCRT工具—>创建公钥—>生成Identity.pub文件
转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件authorized_keys中,注意权限必须为600,在需登录的ssh主机上执行:ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
(5)重设私钥口令:

-f 可以指定自己的私钥文件(如果文件路径正确可以不加)

ssh-keygen –p 
  • 1

在这里插入图片描述
这样用到私钥文件就得输入私钥口令
这样就相当于
(原本操作:登录多个主机需要输入多个不同的口令
(而现在:只用输入一个私钥的口令就可以

启用代理(秘钥–有口令的情况下)

(6)验证代理(authentication agent)保密解密后的密钥
这样口令就只需要输入一次
在GNOME中,代理被自动提供给root用户,
否则运行

ssh-agent bash 启用代理
ssh-add将口令托管给代理

在这里插入图片描述
这样代理程序就接管了输入密匙口令
每一次登录需要启用一次代理)否则代理就不启动

在这里插入图片描述

在这里插入图片描述

例如

1.用centos7的lizi账户连接centos6

切用户su - lizi
1.生成自己的秘钥对(默认是rsa算法, 可以 -t指定加密算法)
ssh-genkey
在这里插入图片描述
生成一个私钥,和公钥文件

在这里插入图片描述
将公钥传输至远程服务器对应用户的家目录
用root传输

ssh-copy-id  -i  /home/lizi/.ssh/id_rsa.pub root@192.168.245.128
  • 1

在这里插入图片描述
然后:再去连接拷文件对方就不用输入密码

也可以直接执行命令
设置好之后只能在lizi用户下以root身份连接
在这里插入图片描述
如果以root账户的key有ssh认证
那么在lizi用户下,连接服务器,还得输入密码
在这里插入图片描述

2.如果将root私钥文件(.ssh/id_rsa)偷走

给一个新的主机里面创建.ssh/文件
然后将root的私钥复制过去
在这里插入图片描述
然后冒充(结果成功)
在这里插入图片描述
说明用户的私钥必须保护好,不然会出大事给私钥加口令

实验:

基于key的expect脚本

做一个堡垒机,实现堡垒机用ssh管理多个机器

**堡垒机:**私钥公钥配好,要能实现key验证,将他的公钥复制到其他机器上去
编一个脚本

-t 指定加密算法(默认不写---rsa算法)
-f 输出的key路径
-P 提供口令
  • 1
  • 2
  • 3

在这里插入图片描述
hosts.txt文件中存放其他机器的ip
在这里插入图片描述

实现多个主机之间的key验证

将ssh-copy-id 传送给自己
然后将这个文件复制到其他主机
相当于所有人共用一套 (公私钥)
在这里插入图片描述
在这里插入图片描述

在xshell中创建key

在这里插入图片描述
下一步—下一步
在这里插入图片描述
下一步
在这里插入图片描述
在这里插入图片描述

然后将导出的文件扔到linux中
将这个文件的内容覆盖重定向到authorized_keys

在这里插入图片描述

以前是基于用户密码验证,现在是基于pubkey验证
在这里插入图片描述
这样就会直接连接上去
若对方的root更改---------------不影响
可以把这个私钥文件放到U盘上(随身携带)

四. scp命令

文件传输
scp [options] SRC… DEST/

常用选项:
-C 压缩数据流
-r 递归复制
-p 保持原文件的属性信息
-q 静默模式
-P PORT 指明remote host的监听的端口
两种方式:
前面是源 后面是目标

将目标主机的内容拷贝到,本目录
scp [options] [user@]host:/sourcefile /destpath

将本机的内容拷贝到

scp [options] /sourcefile [user@]host:/destpath
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

scp 源文件 user@ip 目标目录
可以实现跨网络通信
在这里插入图片描述
scp命令如果重复拷贝相同文件----浪费带宽—用rsync命令解决

五. rsync只复制不同的文件

比scp更快,只复制不同的文件

用于同步备份数据

基于ssh和rsh服务实现高效率的远程系统之间复制文件
使用安全的shell连接做为传输方式
常用选项:
-n 模拟复制过程—假装
-v 显示详细过程
-r 递归复制目录树
-p 保留权限
-t 保留时间戳
-g 保留组信息
-o 保留所有者信息
-l 将软链接文件本身进行复制(默认)
-L 将软链接文件指向的文件复制
-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)
一般用-av组合选项

rsync -av /etc server1:/tmp 复制目录和目录下文件
rsync -av /etc/ server1:/tmp 只复制目录下文件
在这里插入图片描述
写计划任务 (每十分钟—执行一次)
crontab -e

* */10 * * *  /date/shell/rsync.sh
  • 1

六. sftp 交互式

交互式文件传输工具
用法和传统的ftp工具相似
利用ssh服务实现安全的文件上传和下载
使用ls cd mkdir rmdir pwd get put等指令,可用?或help获取帮助信息
sftp [user@]host
sftp> help
用于本机–和服务器端文件传输
命令 服务器端
!命令 (当前客户端本机上执行的命令)
在这里插入图片描述
get 获取(下载到客户端)
put 上传到远程服务器
退出exit或者bye
在这里插入图片描述

复制速度

参考

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/668039
推荐阅读
相关标签
  

闽ICP备14008679号