linux下ssh和sshd-RH124学习笔记
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,什么是ssh?Secure Shell,协议作用:数据在网络中可以加密传输实现:openssh客户端:openssh-client服务器端:openssh端口:22实现:dropbear远程登录tel
千家信息网最后更新 2024年11月25日linux下ssh和sshd-RH124学习笔记
什么是ssh?
Secure Shell,协议作用:数据在网络中可以加密传输实现:openssh客户端:openssh-client服务器端:openssh端口:22实现:dropbear
远程登录
telnet 明文客户端:telnet 服务器端:telnet-server 端口:23默认情况下,禁止用root使用telnet登录系统生产环境中使用telnet,测试和目标主机的指定端口是否可以正常的通信,也就是测试目标主机的指定端口是否开放(通过端口来判断服务是否处于开启状态)
进程
守护进程:一个服务维护一个进程,让进程工作在后台,每个进程都有自己的服务,可用service服务名 start|stop...进行管理超级守护进程:一个服务维护多个进程xinetd瞬时守护进程:由超级守护进程负责管理的子进程就是瞬时守护进程telnet瞬时进程没有自己的服务,他的启动和管理依赖xinetd
ssh
telnet scp 总结:ssh的功能 1、远程登录 2、远程文件传输 3、类似于ftp的文件传输功能,sftpssh的客户端和服务器端 ssh安全 ssh v1 <<废弃 RSA ssh v2 RSA DSA 如何通过公钥来判断服务器是合法的?
ssh的配置文件
客户端配置文件:/etc/ssh/ssh_config服务器端配置文件 /etc/ssh/sshd_config linux ssh客户端收到的公钥文件的保存位置~/.ssh/known_hosts ssh服务器端的ip 加密算法 秘钥
客户端工具1-SSH
客户端使用ssh两种使用方式基于口令做登录方式基于秘钥做登录方式 基于口令的认证方式格式 ssh [options][user@]host [COMMAND] ssh [options][-l user] host [COMMAND]说明: user:指定以哪个用户的身份登录远程主机,如果不指定user, 则是以当前系统的用户来登录远程主机 command:直接在远程主机上执行命令,执行完毕后自动退出 选项: -p port:指定远程主机的ssh所使用的端口,如果不指定此选项,默认连接22端口 -t :远程执行sudo命令
客户端配置文件
/etc/ssh/ssh_config
基于秘钥做登录认证(免密码登录)
原理:客户端 一对秘钥 将公钥保存在服务器端的对应账户的家目录下的隐藏文件中(.ssh) 登录 服务器端就会向客户端发送质询 服务器端会用预先保存的公钥来加密一段数据,然后将加密数据发送给客户端,如果客户端可以 解密,则是合法用户。linux免密码登录实现过程 准备linux虚拟机 172.20.225.70 clinet 172.20.225.71 server第一步:在客户端生成一对秘钥 #ssh-keygen -t rsa 默认秘钥对的位置 /root/.ssh/id_rsa id_rsa <<<秘钥文件 id_rsa.pub <<<公钥文件 ls ~/.ssh/ id_rsa id_rsa.pub 第二步:将公钥文件传到服务器端 root登录172.20.225.70,因此,这个公钥文件需要放在172.20.225.70的root用户的家目录下 ssh-copy-id [-i identifile] [user@]host 说明:-i 指定公钥文件的 user@host:指定传递到那个主机的那个用户的家目录下 工作原理: 1、将公钥文件传递到服务器端 2、将传递的文件改名为authorized_keys 3、修改文件的权限为600实现命令 ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.20.225.71 服务器收到客户端的公钥文件后,会自动改名为:authorized_keysopenssh客户端 windows客户端 xshell putty secureCRT …… linux客户端 ssh、sftp、scp
客户端工具2-scp
作用:在两个主机上互相的传递文件格式: pull(拉取):scp [options] [user@]host:/pat/to/file /path/to/save push(推送):scp [options] /path/to/push [user@]host:/path/to/save 选项: -r:递归 -t:保留文件的属性不变(权限、时间戳) -q:静默模式 -P port:指定使用的端口(默认使用22端口) 推送例子:将本地文件/root/new1.txt推送到172.20.225.71的tmp目录下 #scp /root/new1.txt root@172.20.225.71:/tmp/ 拉取例子:将172.20.225.71下/root/11.sh 拉取到本机/home/下 #scp root@172.20.225.71:/root/11.sh /home
客户端工具3-sftp
格式:sftp IP ssh的服务器端的配置文件/etc/ssh/sshd_config#Port 22 <<<< ssh服务所监听的端口#ListenAddress 0.0.0.0 <<<< ssh服务所监听的地址#PermitRootLogin yes <<<< 是否允许root远程登录#MaxAuthTries 6 <<<< 指定最大尝试次数#MaxSessions 10 <<<< 最大并行连接会话数量(同时多少个用户尝试连接服务器)AuthorizedKeysFile .ssh/authorized_keys <<<<指定秘钥认证文件名称和路径#PubkeyAuthentication yes <<<< 是否支持秘钥认证PasswordAuthentication yes <<<< 是否支持口令认证#UseDNS no <<<< 禁止做DNS反向解析#ClientAliveInterval 0 <<<< 设置ssh登录的空闲超时时间,单位是秒 变量:TMOUT=xx #AllowUsers= user1 user2 …… <<<< 设置白名单#AllowGroups=gp1 gp2 <<<< 设置白名单#DenyUsers= user1 user2 <<<< 设置黑名单#DenyGroups=gp1 gp2 <<<< 设置黑名单#PermitEmptyPasswords no <<<< 设置是否允许空密码日志设施 记录日志的方式 SyslogFacility AUTHPRIV AUTHPRIV意味着日志信息会记录到/var/log/secure ssh服务器端日志 /var/log/secure 这个日志需要经常看 普通用户没有权限查看和修改配置ssh实战 1、配置监听的端口 2、配置监听的地址 3、禁止使用ssh v1 4、设置用户白名单 5、设置空闲超时时间 6、结合防火墙设置ssd规则 7、禁止使用弱密码(数字 字母 特殊符号 长度位8字符以上) 8、尽量使用秘钥认证 9、禁止使用空密码登录 10、禁止root远程ssh 11、限制尝试次数与并行连接数量 12、将日志文件做异地备份 13、经常分析查看日志文件 centos6和centos7的区别 service sshd status systemctl status sshd.service
用三个虚拟机实现如下效果
1、从A主机可以直接登录B C 两个主机2、从A主机可以直接以远程的方式在B C 两个主机上执行命令3:从A主机可以直接向B C 两个主机发送文件案例:让baskup主机可以使用秘钥的方式登录web1 web2……且以普通用户身份执行秘钥分发和文件传输等操作1、创建普通用户(三个主机都创建)[root@localhost ~]# useradd tuser[root@localhost ~]# echo "123456" | passwd --stdin tuser2、生成秘钥对[root@localhost ~]# su - tuser[tuser@localhost ~]$ ssh-keygen -t rsa3、传递秘钥[tuser@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub tuser@172.20.225.70[tuser@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub tuser@172.20.225.714、登录[tuser@localhost ~]$ ssh root@172.20.225.70root@172.20.225.70's password: 免密登录 [tuser@localhost ~]$ ssh tuser@172.20.225.70[tuser@client ~]$ 总结:在进行登录的时候,必须保证当前用户的家目录下有.ssh/id_rsa在对方主机的指定用户的家目录下,必须要有公钥文件.ssh/authorized_keys[tuser@localhost root]$ ssh tuser@172.20.225.70 '/sbin/ip add'[tuser@localhost root]$ ssh tuser@172.20.225.71 '/sbin/ip add'批量获取主机的信息userName="tuser"for i in 67 68 69 70 71do ip="172.20.225.$i" if ! ping -c1 -W1 $ip &>/dev/null;then echo "The host $ip is not exist." else res=`ssh ${userName}@${ip} '/bin/df -h | grep sda1'` echo "==========================ip:$ip=====================" echo "The disk use infomation:$res" fidone批量向主机传递文件 让用户输入一个文件,则将文件传递到所有的主机 如果传输成功,提示绿色成功,如果传输失败,提示红色失败,如果文件不存在,则提示无此文件。#!/bin/bash#author:lichao#date:20190809#function: use ssh to send file#mail:chao.il@qq.comuserName="tuser"funFile=/etc/init.d/functionsif [ ! -e $funFile ];then echo "Error. the funcation file not exist." exit 19else . $funFilefiread -p "Please enter a file: " fileNameif [ ! -e $fileName ];then echo "no such file." echo "bye." exit 12fi for i in 70 71do ip="172.20.225.$!" if ping -c1 -W1 $ip &>/dev/null;then if scp -rq $fileName $userName@$ip:~/;then action "send file to $ip" /bin/true else aciton "send file to $ip" /bin/false fi else action "send file to $ip" /bin/false fi done案例:将文件传递到目标主机的非家目录下[tuser@localhost root]$ echo "test page".test.pagetest page.test.page[tuser@localhost ~]$ scp test.page tuser@172.20.225.70:/etc/scp: /etc//test.page: Permission denied[tuser@localhost ~]$ scp test.page tuser@172.20.225.70:~/test.page没有权限分两步: 1、将文件传递到目标主机的家目录下 2、远程执行移动命令,将家目录下的文件移动到目标位置 [tuser@localhost ~]$ scp test.page2 tuser@172.20.225.70:~/ test.page2 100% 10 10.8KB/s 00:00 bash-4.2# ls /home/tuser/ .bash_history .bash_logout .bash_profile .bashrc .ssh/ test.page test.page2 bash-4.2# visudo tuser ALL=(ALL) NOPASSWD: /bin/mv [tuser@localhost ~]$ ssh -t tuser@172.20.225.70 'sudo mv ~/test.page2 /etc/' Connection to 172.20.225.70 closed. bash-4.2# ls /etc/te terminfo/ test.page1 test.page2
配置sshd服务
端口 0-65535 小于1024的端口:是由系统保留使用的 自定义端口通常用1024以上的端口 端口的作用:在系统当中唯一的标识一个进程 这样就可以现实将发送给指定端口的数据转发到指定的进程中 系统中每个进程在启动的时候,会自动个向注册使用一个端口,当有发送到这个端口的数据的时候, 内核会根据端口的记录转发给指定的进程。 一个主机向另一个主机发送数据包的时候,在数据包中已经指定了这个数据包是给多少号端口的 作用:用来实现让客户端使用22端口来远程登录 配置文件: /etc/ssh/sshd_config <<<<<这是服务端的配置文件 /etc/ssh/ssh_config <<<<<这是客户端的配置文件 安全操作 1、修改sshd的服务端口 # vi /etc/ssh/sshd_config Port *** # service sshd restart 2、解决xshell登录缓慢的问题 将UseDNS yes 改为 UseDNS no 将GSSAPIAuthentication 改为 GSSAPIAuthentication no 3、允许root用户登录 PermitRootLogin yes 改为no 后root用户登录不了系统
文件
服务
主机
登录
端口
客户
客户端
进程
服务器
用户
配置
公钥
目录
数据
方式
日志
端的
系统
传输
认证
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
武汉大学网络安全李炳辉
架构ftp服务器
开源软件开发设计crm
天刀保存的捏脸数据库
服务器安全狗设置备份
c服务器开发框架
网络安全龙头公司雪球
人类一败涂地 云服务器搭建
学生干部网络技术培训
数据库中导入excel
平安银行软件开发工资待遇
联通服务器突然重启
曙光刀箱服务器管理口ip
生活中的数据库例子
人人参与网络安全新格局
access的数据库
网络安全事故处理责任
宁夏安卓软件开发招聘信息
破坏网络安全的十大威胁
php 循环遍历数据库
为什么服务器不能更新
佛山淘好源网络技术有限公司
宿迁网络安全审计系统咨询品牌
速达服务器连接数据库
互联网信息科技专业
订阅号服务器
杭州crm软件开发工程师
上海肜创互联网科技有限公司电话
长沙软件开发驻场正规平台
网络安全事件的资料