远程访问:
xshell
moba
远程连接:机房 机房重地,闲人免进 远程连接工具 ssh
系统自带的,系统默认给他开通了防火墙(他被配置在了防火墙规则策略当中,无需进行额外配置)
ssh远程管理
OpenSSH服务器
ssh:安全通道协议,主要实现字符界面的远程登录,远程复制,类似于ftp的功能
端口号:22 默认端口,可以修改的
数据加密:对通信双方的数据传输都进行了加密处理。包括用户登陆的口令输入。
数据传输---基于tcp协议
ssh客户端--------------------------------ssh服务端
tcp 22
数据传输是加密的,方式数据泄露
数据传输是压缩的,可以提高传输速度
客户端 xshell moba(远程连接)
服务端:openssh
openssh:是ssh协议的开源软件,系统自带,而且已经设置为开机自启
服务名称:sshd
服务端主程序:/usr/sbin/sshd
配置文件位置:/etc/ssh/
ssh_config:主要是针对客户端进行配置
sshd_config:针对服务端进行配置
ssh的组成结构:
1、远程连接 远程登录 安全文件传输协议 sftp 都是openssh的一部分
传输层:
传输层协议(ssh-trans):服务器认证。保密性以及完整性
数据压缩
ssh-trans:提供加密技术,密码主机认证。缺点:它只做认证主机,认证主机的用户名和密码,不执行用户认证
用户认证协议(ssh-userauth)
特点:运行在传输层协议之上,开始认证用户之后,从底层的会话标识接收会话的标识符。认证会话标识符的所有权。建立私钥,进行通信。
同样的,他也是只认证用户,不负责处理连接
连接协议(ssh-connect):
处理最终的连接请求,运行在用户认证协议之上,提供了交互式登录界面,远程命令、数据转发
进入sshd_config里面看一下
Port 22 默认端口号22,一般会更改端口号
Listen 监听地址默认注释掉,表示所有主机都可以和他建立连接
#LoginGraceTime 2m 登录验证时间2分钟
#PermitRootLogin yes 禁止root用户登陆,注释掉了,所以root用户可以登陆
#StrictModes yes
#MaxAuthTries 6 输密码,最多可以输6次,失败退出了,是伪命题,输完6次退出之后还可以再输
#MaxSessions 10
如果默认端口号不是22怎么办?
重启服务,报错了,为什么?
看日志
是什么原因导致的?
SELinux自带的setenforce 安全机制不允许你更改端口号,违反了安全机制
关闭安全机制
命令行的方式进行连接
ssh root@192.168.233.10
root不是本机用户,是10的用户 @固定格式 192.168.233.10你要登陆的远程服务器的ip地址
-p 指定端口号
登录分为两步
主机认证和用户密码认证
注意:你登录到了另外一台主机,就是对另外一台主机进行操作,对本机没有任何影响
SSH的访问控制
/etc/ssh/sshd_config
AllowUsers:允许登录的用户
DenyUsers:拒绝登陆的用户
添加两个新用户试试效果:
允许登录和拒绝登陆,全部都是基于你要登录的主机
sshd_config
AllowUsers zhangsan boge@192.168.233.20 允许zhangsan和boge这两个账户的登陆,但是对boge做了限制条件,只能从20登陆我10这个主机
多个用户用 空格 隔开
重启一下服务试试其他主机能否远程登录它
test3上zhangsan可以远程登录
test2上boge可以远程登录
DenyUsers 拒绝就是把所有的都拒绝掉了,不用加主机名,所有的主机都不能进行登录
如下图:
远程复制:重点,工作当中用的到,非常好用
scp 远程连接,从别的主机把文件或者目录,复制到本机。
test1做本机
从test2上复制文件到test1
命令:scp root@192.168.233.20:/opt/ky30.txt /opt/rh
和远程认证的协议是一样的,都是ssh协议
scp:远程复制的命令,固定格式
root:登录主机的用户
@固定格式
192.168.233.20:我要登录主机的ip地址
:后面跟路径
:/opt/ky30.txt /opt/rh:第一个路径是登录主机的路径下的文件名或者目录名 第二个路径是我要复制到我本机的路径
复制目录 -r 指定端口-P rP可以写在一块
scp -rP 10022root@192.168.233.10:/opt/ky30/ /opt/
从test2上复制test1的文件
test1
test2
scp -P 10022 root@192.168.233.10:/opt/ky301.txt /opt.rh
如果不是默认端口要用-P 指定端口
查看一下
如何复制目录?
现在我要从test2这边把test1的ky30这个目录复制过来
test1创建目录
test2
复制目录 -r 指定端口-P rP可以写在一块
scp -rP 10022root@192.168.233.10:/opt/ky30/ /opt/
sftp:安全的FTP,使用了基于ssh协议的加密和解密技术,所以它的传输效率比传统的ftp要慢,但是安全性更高,语法也和ftp一模一样
moba自带sftp模块
xshell可以直接往终端里面拖
moba只能把文件往sftp里面的目录里拖,直接拖会错误
这样文件就可以正常进去了
如果不自带,就要通过命令格式来,同远程连接一样
sftp root@192.168.233.20
输入密码
这样就通过加密连接的方式登录上了20
现在我们cd到opt目录下,就可以进行get 上传,put 下载了
一样是quit退出
SFTP的上传和下载,上传文件的默认位置是哪,下载的文件下载到哪里去了,我们后面再说(见作业2)
上面我们演示了默认端口登陆,那么非默认端口怎么办呢?
sftp -P 10022 root@192.168.233.10
-P 指定端口
总结:
ssh协议的三大部分 远程连接 远程复制 sftp 远程安全文件传输。
ssh除了验证用户密码之外,还有密钥对验证。那为什么要有秘钥对?
因为服务器用户的密码,可以通过暴力破解的方式破解掉
在此情况下产生了秘钥对
它要求提供匹配的秘钥信息才能通过验证。
工作方式(流程):1、客户端创建一个秘钥文件
2、秘钥文件传送到服务端的指定位置
3、远程登录时,系统将使用秘钥对进行验证,实现免交互登录。增强了一定的安全性
概括为客户端先配置秘钥,再传给服务端,服务端下次再登陆就用密钥对进行免交互登录。
注:密码验证和秘钥验证都开启,服务器会优先使用秘钥对验证,秘钥对验证通过,就可以不用密码进行登录。
我们来看一下配置文件
vim /etc/ssh/sshd_config
Pubkey 启用密钥验证 默认也是开启的
一般情况下,密码验证和秘钥验证都是默认开启的
但是秘钥对的文件需要手动配置生成
我们用test1作为服务端,test2作为客户端
生成秘钥文件
ssh-keygen -t ecdsa
keygen 指定秘钥文件
-t 指定加密算法
指定私钥的位置,我们默认位置即可
设置生成秘钥对的密码,这样秘钥对就生成好了
我们进生成的位置来看一下
把公钥文件传给服务端,输入20的root密码就设置好了
ssh-copy-id -i id_ecdsa.pub root@192.168.233.20
把公钥文件传给20之后,我们还要在10这边做最后一步,实现免交互
ssh-agent bash 初始环境
ssh-add 生成公钥的密码文件
密码文件读取完了,我们就可以直接登录20了,就是认证了密钥对之后,无需再输入密码了,实现了免交互登录
秘钥加密方式:
ecdsa rsa dsa
一般用ecdsa
生成的两个文件
id_ecdsa:私钥文件
id_ecdsa.pub:公钥文件
TCP Wrappers
Tcp wrappers 访问控制:
主要的功能就是 包裹tcp服务,代为监听使用tcp服务程序的端口
要先通过tcp wrappers的安全机制,才能真正访问程序
特点:只能针对使用tcp协议的服务(ssh,apache)
他有对应的两个策略文件:
/etc/hosts.allow 允许个别,拒绝所有(更加安全)
sshd:192.168.233.30 允许30服务器可以使用sshd这个服务连接到我的上面
ALL:ALL 所有都允许
什么都没有就是都允许
/etc/hosts.deny 允许所有,拒绝个别
默认的都是空
sshd:192.168.233.30 拒绝30这个服务器使用sshd这个服务(拒绝它远程登录到我这边)
它是即时生效的,不需要你去重启
我们到拒绝的这个服务器这边看一下,一旦被拒绝就不允许你登录,连输密码的机会都没有,直接给你deny拒绝掉了
效果如图所示:
---------------------------------------------------------------------------------------------------------------------------------
附:作业1,2,3
第一个作业:把一个用户同时允许和拒绝
AllowUsers 允许登陆的用户
DenyUsers 拒绝登陆的用户
先创建两个新用户
cd /etc/ssh
vim sshd_config
AllowUsers zhangsan boge@20.0.0.200 允许zhangsan和boge这两个账户的登陆,但是对boge做了限制条件,只能从200登陆我100这个主机
DenyUsers zhangsan 允许的同时又拒绝zhangsan登陆
改完之后重启一下服务
测试一下zhangsan
效果展示
boge 可以正常从200这边远程登录
再先拒绝然后再允许同一用户看看
效果展示:
结论:先允许然后拒绝同一用户,拒绝该用户登录
先拒绝然后允许同一个用户,依旧拒绝该用户登录
第二个作业,SFTP的上传和下载,上传文件的默认位置是哪,下载的文件下载到哪里去了
Moba自带sftp模块
Xshell可以直接拖
Moba需要用sftp的方式进行传输
我们加密连接200服务器,cd 到它的家目录看一下
get 下载
put 上传
总结:put是把你登录ftp的用户的文件上传到登录前的主机的家目录上
get 是把你远程登录前的用户的目录的文件下载到你登录ftp的目录上
get下载,下载到登录的ftp的目录
put上传,把文件上传到用户的家目录上
第三个作业:大家做一个密钥对 rsa 密钥对实现免交互登录
ssh-keygen -t rsa
-keygen 指定秘钥对
-t 指定秘钥类型
id_rsa:私钥
id_rsa.pub:公钥文件
先 生成一个秘钥
cd 到家目录后查看隐藏文件,有个.ssh
我们cd进去看看
把秘钥复制到200的root用户
这个时候就设置好了,已经把公钥文件传给200了
再在100这边实现免交互
这个时候就是认证了密钥对之后,无需设置登录密码,直接实现免交互登录
重点总结:
远程访问:(ssh主要的作用就是远程访问)
包含三大类:远程连接(远程登录) 远程复制 sftp远程安全文件传输协议
默认端口号22 可以修改
特点:传输是加密的,防止数据泄露
传输数据的压缩的,可以提高传输速度
应用名叫做openssh
openssh:是SSH协议的开源软件,系统自带的,而且已经设置了开机自启
服务名:sshd
ssh_config:对客户端进行配置
sshd_config:对服务端进行配置(一般配置服务端)
ssh的组成结构
远程连接 远程登录 安全文件传输协议 sftp 都是openssh的一部分
传输层:
传输层协议(ssh-trans):服务器认证。保密性以及完整性
数据压缩
ssh-trans:提供加密技术,密码主机认证。缺点:它只做认证主机,认证主机的用户名和密码,不执行用户认证
用户认证协议(ssh-userauth)
特点:运行在传输层协议之上,开始认证用户之后,从底层的会话标识接收会话的标识符。认证会话标识符的所有权。建立私钥,进行通信。
同样的,他也是只认证用户的密码和秘钥对,不负责处理连接
连接协议(ssh-connect):控制连接
处理最终的连接请求,运行在用户认证协议之上,提供了交互式登录界面,远程命令、数据转发
命令行的方式进行连接
ssh root@192.168.233.10
root不是本机用户,是10的用户 @固定格式 192.168.233.10你要登陆的远程服务器的ip地址
-p 指定端口号
登录分为两步
主机认证和用户密码认证
注意:你登录到了另外一台主机,就是对另外一台主机进行操作,对本机没有任何影响
SSH的访问控制
/etc/ssh/sshd_config
AllowUsers:允许登录的用户
DenyUsers:拒绝登陆的用户
AllowUsers zhangsan boge@192.168.233.20 允许zhangsan和boge这两个账户的登陆,但是对boge做了限制条件,只能从20登陆我10这个主机
多个用户用 空格 隔开
远程复制:重点,工作当中用的到,非常好用
scp 远程连接,从别的主机把文件或者目录,复制到本机。
命令:scp root@192.168.233.20:/opt/ky30.txt /opt/rh
和远程认证的协议是一样的,都是ssh协议
scp:远程复制的命令,固定格式
root:登录主机的用户
@固定格式
192.168.233.20:我要登录主机的ip地址
:后面跟路径
:/opt/ky30.txt /opt/rh:第一个路径是登录主机的路径下的文件名或者目录名 第二个路径是我要复制到我本机的路径
复制目录 -r 指定端口-P rP可以写在一块
scp -rP 10022root@192.168.233.10:/opt/ky30/ /opt/
sftp:安全的FTP,使用了基于ssh协议的加密和解密技术,所以它的传输效率比传统的ftp要慢,但是安全性更高,语法也和ftp一模一样
ssh协议的三大部分 远程连接 远程复制 sftp 远程安全文件传输。
get下载,下载到当前登录的ftp的目录
put上传,把文件上传到用户的家目录上(root/home)
ssh除了验证用户密码之外,还有密钥对验证。那为什么要有秘钥对?
因为服务器用户的密码,可以通过暴力破解的方式破解掉
在此情况下产生了秘钥对
它要求提供匹配的秘钥信息才能通过验证。
工作方式(流程):1、客户端创建一个秘钥文件
2、秘钥文件传送到服务端的指定位置
3、远程登录时,系统将使用秘钥对进行验证,实现免交互登录。增强了一定的安全性
概括为客户端先配置秘钥,再传给服务端,服务端下次再登陆就用密钥对进行免交互登录。
注:密码验证和秘钥验证默认都开启,服务器会优先使用秘钥对验证,秘钥对验证通过,就可以不用密码进行登录。
非默认端口一样 -P
生成秘钥文件
ssh-keygen -t ecdsa
keygen 指定秘钥文件
-t 指定加密算法
秘钥加密方式:
ecdsa rsa dsa
一般用ecdsa
生成的两个文件
id_ecdsa:私钥文件
id_ecdsa.pub:公钥文件
TCP wrappers 访问控制了解即可,工作中用的不多,不会专门只针对tcp来用
后面会用到更强大的工具iptables