目录
SSH是哪些?
OpenSSHisthepremierconnectivitytoolforremoteloginwiththeSSHprotocol.
OpenSSH是一个比较早的用于远程登陆联接使用的工具,底层是使用ssh合同
SSH(SecureShell)是一种网路合同,用于实现远程登陆计算机、数据传输和远程执行命令等操作的安全加密方法。与传统的远程登陆方法如Telnet不同,SSH使用加密技术对通讯过程进行了保护,增强了网路通讯的安全性。
具体来说,SSH合同有以下几个特征:
加密传输:SSH对数据进行了加密处理,在网路上传输时可以有效避免数据被非法窃听或篡改,保证通讯安全性。
验证身分:SSH使用私钥加密技术,可以验证远程服务器的身分,但是顾客端可以使用用户名和密码等账簿进行认证,确保远程操作的合法性。
远程协作:SSH实现了在远程终端上执行本地命令和向远程主机传输文件等功能,便捷用户进行远程操作和协作开发。
通过SSH合同,用户可以通过终端、命令行等方法远程登陆到其他计算机,进行命令行操作、管理和维护等任务。同时,SSH也提供了SCP、SFTP等文件传输合同,可以便捷地在本地计算机和远程服务器之间传输文件。
须要注意的是,SSH合同是一种开放标准,包含在许多操作系统中,并可使用各类SSH顾客端和服务器进行实现和使用。因为SSH合同的安全性高,因而它成为了Linux系统远程登陆的标准形式,并广泛用于云估算、网络管理、软件开发等领域。
telnet服务:远程控制的服务:在网路上传输的数据是明文的,telnet这个远程控制服务极少使用了
查看ssh的版本:
[root@localhost lianxi]# rpm -q openssh
openssh-7.4p1-21.el7.x86_64
[root@localhost lianxi]#
默认linux系统是安装,centos系统默认安装
Ubuntu需要去指定安装
openssh安装包的作用:
[root@localhostlianxi]#rpm-qa|grepopenssh
openssh-clients-7.4p1-21.el7.x86_64--》提供工具的
openssh-7.4p1-21.el7.x86_64--》提供工具的
openssh-server-7.4p1-21.el7.x86_64--》提供ssh服务的
[root@localhostlianxi]#
怎么晓得一个服务是否运行?1、看进程
2、看端口
sshd表示哪些呢?
他表示的是ssh服务的守护进程(sshd)
d表示:daemon守护进程:仍然在显存里运行的进程(父进程)
[root@localhostlianxi]#pstree-p|grepsshd#sshd的进程结构
|-sshd(1179)-+-sshd(12759)---bash(12766)
|`-sshd(15353)---bash(15360)-+-grep(18956)
[root@localhostlianxi]#
右图为sshd的联接示意图:
配置文件目录:/etc/ssh
配置文件的作用就是给应用程序传递参数
sshd_config--》服务器端的配置文件--》一般更改的是它
ssh_config--》客户端命令的配置文件
进程名子:sshd-->sshddaemon
默认占用的端标语是:22
sshd_config--》sshd进程的配置文件
#Port22告诉sshd进程占用22号端口
下边我们完成一个实验:
我们将更改ssh服务端标语为2244端口,并禁用root用户登入
(前提是我们关掉selinux服务,这个服务会加大linux的安全性,当我们去更改sshd服务的端标语的时侯,会被拒绝,但是我们关掉了防火墙服务)
[root@localhostssh]#getenforce查看selinux的状态
Enforcing强制执行的
[root@localhostssh]#setenforce0临时关掉selinux1开启selinux
[root@localhostssh]#getenforce
Permissive包容模式
[root@localhostssh]#
关掉防火墙,由于防火墙开启不容许3001端口随意步入的
[root@localhostlianxi]#servicefirewalldstop
Redirectingto/bin/systemctlstopfirewalld.service
[root@localhostlianxi]#
1、修改端标语为2244
2、禁止root用户登入
3、完成后我们重启sshd服务
[root@localhost ssh]# service sshd restart 重启sshd服务
Redirecting to /bin/systemctl restart sshd.service
[root@localhost ssh]#
4、扩展添加欢迎条幅文件
其中的welcome.txt文件内保存的就是庆贺词linux虚拟主机,我们可以随便添加。
[root@fengdeyong ssh]# cat /etc/ssh/welcome.txt
welcome to sanchuang ssh server
[root@fengdeyong ssh]#
5、测试是否通过2244端口能够联接ssh服务,是否不能通过root用户联接ssh服务:
[root@fengdeyong ssh]# useradd zhenyani 创建连接用户
[root@fengdeyong ssh]# echo 123456|passwd zhenyani --stdin
更改用户 zhenyani 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@fengdeyong ssh]#
我们通过Xshell来联接
其实我们可以使用ssh命令远程登陆
ssh的命令的使用
1.只是登录
[root@manager161.ssh]#sshroot@192.168.0.180--》推荐
[daijun@manager161~]$ssh192.168.0.180不指定登录用户,默认会使用当前的用户名远程联接
[daijun@manager161~]$ssh-lroot192.168.0.180
root@192.168.0.180'spassword:
Lastlogin:SatJun2611:27:122021from192.168.0.163
[root@www~]#exit退出
登载
Connectionto192.168.0.180closed.
[daijun@manager161~]$
-p:可以指定端标语
2.运行远程机器上的脚本或则命令
[root@manager161.ssh]#ssh192.168.0.180mkdir/luogg{1..10}
[root@manager161.ssh]#ssh192.168.0.180sudomkdir/danyh{1..10}
[root@manager161.ssh]#
[root@manager161.ssh]#ssh192.168.0.180sudobash/lianxi/scan_lan_ip.sh
假如ssh远程联接不上,怎么排查?
ssh服务远程联接不上
排错思路:
1.网路是否通畅
ping
2.检测进程或则服务是否开启
psaux|grepsshd
servicesshdstatus
3.检测端口
netstat-anplut
查看sshdlisten状态是否存在
4.看日志看错误提醒
[root@sanchuang~]#servicesshdrestart
Redirectingto/bin/systemctlrestartsshd.service
Jobforsshd.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatussshd.service"and"journalctl-xe"fordetails.
[root@sanchuang~]#journalctl-xe
scp命令的使用:
远程传输文件的命令
[root@nameserver named]# scp sc.com.zone 192.168.0.180:/root #前面的代表源地址,后面的代表目的地
scp命令的使用
scp命令推送文件在linux服务器之间
[root@manager161lianxi9]#scpmkdir.shroot@192.168.0.180:/root
mkdir.sh100%4210.9KB/s00:00
[root@manager161lianxi9]#
[root@manager161lianxi9]#scproot@192.168.0.180:/etc/passwd.
passwd10092953.1KB/s00:00
[root@manager161lianxi9]#ls
mkdir.shpasswd
[root@manager161lianxi9]#
[root@manager161lianxi9]#scp-rroot@192.168.0.180:/boot.复制文件须要接-r选项
[root@manager161lianxi9]#catmkdir.sh是具体须要做哪些工作的脚本
foriin{1..10}
do
mkdir-pfeng$i
done
[root@manager161lianxi9]#catctrl_mysql.sh实现传递脚本到服务器,之后执行传递过去脚本
foriin{1..100}
do
scp/lianxi9/mkdir.shroot@192.168.0.$i:/root
sshroot@192.168.0.$ibash/root/mkdir.sh
done
[root@manager161lianxi9]#
复制文件夹的话须要添加-r
免密通道构建实验:免密通道构建的益处:2台机器之间传输文件或则执行命令,不须要输入密码了
提早打算两台linux服务器,安装号openssh服务
建议使用centos7的系统
对两台机器的IP地址进行配置(桥接、NAT)
桥接模式:
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
#IPADDR=172.20.10.3
IPADDR=192.168.2.149
PREFIX=24
#GATEWAY=172.20.10.1
GATEWAY=192.168.2.1
DNS1=114.114.114.114
NAT模式:
BOOTPROTO=dhcp
NAME=ens33
DEVICE=ens33
ONBOOT=yes
两台机器的IP地址分别为192.168.2.149(client)和192.168.2.17(server)
下边我们将对其进行免密通道的构建
两台机器默认是容许root用户登入服务器安装linux管理,默认打开的端口是22号
单项信任关系
单向信任关系
步骤:
1、在顾客机上使用root用户登入
[root@mysql ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #一直回车即可,注意不要设置密码
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:MFcRVA8s8JwDYszCsPzRrTiGQtiX35S9JsOoBx9ctNk root@mysql
The key's randomart image is:
+---[RSA 2048]----+
| .o oo +o==o |
|.o .o+o+ @...o |
|..+ +.+ O E. . |
|. + = @ o |
|. . * * S o |
| . . = . + |
| . o |
| . |
| |
+----[SHA256]-----+
[root@mysql ssh]# cd ~/.ssh
[root@mysql .ssh]# ls
id_rsa id_rsa.pub known_hosts
[root@mysql .ssh]# ll
总用量 12
-rw------- 1 root root 1679 4月 14 19:54 id_rsa
-rw-r--r-- 1 root root 392 4月 14 19:54 id_rsa.pub
-rw-r--r-- 1 root root 175 4月 14 07:16 known_hosts
[root@mysql .ssh]#
2、上传私钥到服务器
ssh-copy-id命令会手动帮助我们将私钥上传到服务器起来
[root@mysql .ssh]# ssh-copy-id root@192.168.2.17
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.2.17 (192.168.2.17)' can't be established.
ECDSA key fingerprint is SHA256:0Q2Gbu5Qj6ads614hulwxfDqGB6XnsMvwLMpQxFXJtk.
ECDSA key fingerprint is MD5:9a:d4:88:61:e7:96:c6:e7:94:11:2d:3f:47:c2:1f:c4.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.2.17's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.2.17'"
and check to make sure that only the key(s) you wanted were added.
[root@mysql .ssh]#
我们能在服务器上看见authorized_keys文件(储存私钥的文件)
3、测试秘钥登陆,免密登陆
在服务器端重复如上操作,即可产生单向信任关系
ansible软件运用到的就是ssh服务
在Xshell里也进行免密通道的配置:
1、我们先点开Xshell里的工具中的新建用户秘钥生成向导
之后仍然点击下一步,记住不须要设置密码哦
最后将生成的私钥传输到你的桌面上,便捷传输到你的Linux机器里,我这儿时使用Xftp传输到Linux上的,其实我们也可以使用rz命令传输,你必须下载lrzsz工具包,rz命令只能上传文件,假如须要从远程主机下载文件,应当使用sz命令。
将传输好的文件重定向到authorized_keys文件中去(注:重定向会造成你输入的秘钥没有分段,因而须要注意文件是否出现没有分段的现象)
[root@mysql .ssh]# cat id_rsa_2048_mysql_主.pub >> .ssh/authorized_keys
完成这一步后,我们回到Xshell上,进行免密联接操作。
我们配置用户身分验证如我右图所示。
最后配置IP地址和端标语即可
联接成功!
我们怎样对SSH访问加固,使安全性愈发牢靠呢?1、修改端口2、禁用root用户
为何ssh的时侯不能使用root?登陆进去了可以使用root?
3、升级openssh
[root@sanchuang ssh]# yum update openssh openssh-server
参考网站:pub-OpenBSD-OpenSSH-portable安装包下载_开源镜像站-阿里云
4、创建堡垒机跳板机
跳板机或堡垒机的作用是哪些呢?
跳板机是一种安全的远程访问方法,用于通过中间服务器(即跳板机)来访问远程网路资源。它的作用主要有以下几个方面:
提高安全性:使用跳板机可以提高网路安全性。在实际应用中,跳板机一般只容许特定的用户进行登陆,并采用愈加严格的身分验证、访问控制等举措,进而有效地避免未经授权的用户访问远程资源。
简化管理:跳板机还可以简化远程资源的管理。因为跳板机只须要开放一个端口,就可以让多个用户进行远程访问,因而可以愈加便捷地统一管理和监控远程资源的使用情况。
节省成本:使用跳板机可以节省企业的运维成本。因为跳板机可以降低直接联接到远程设备的数目,因而可以降低设备的维护和管理成本。据悉,使用跳板机可以集中监控远程访问日志服务器安装linux管理,及时发觉安全问题,降低安全风波发生的几率。
其实linux系统官网,跳板机是一种十分重要的安全管理工具,可以帮助企业强化网路安全,简化系统管理,并节省成本。在实际应用中,跳板机被广泛应用于运维、开发、测试等各个领域,成为了重要的远程管理方法之一。
怎么做的让内外的服务器只容许堡垒机/跳板机访问?
1.iptables
2.tcpwrappers
SSH使用TCP Wrappers实现访问控制
主要配置文件
/etc/hosts.allow --》白名单
/etc/hosts.deny --》黑名单
TCP Wrappers的访问控制原则
首先检查 hosts.allow 文件,若找到相匹配的策略,则允许访问
否则继续检查 hosts.deny 文件,若找到相匹配的策略,则拒绝访问
如果两个文件中都没有相匹配的策略,则允许访问
[root@sanchuang ~]# cat /etc/hosts.deny
sshd:all
[root@sanchuang ~]# cat /etc/hosts.allow
sshd:192.168.2.*,114.11.11.1
[root@sanchuang ~]#
[root@sanchuang ~]# tail -f /var/log/secure
Nov 8 16:22:39 sanchuang sshd[3701]: refused connect from 192.168.2.198 (192.168.2.198)
Nov 8 16:22:40 sanchuang sshd[3702]: refused connect from 192.168.2.117 (192.168.2.117)
[root@ssh-server .ssh]# ssh -p 3001 root@192.168.2.197
ssh_exchange_identification: read: Connection reset by peer
[root@ssh-server .ssh]#
不需要刷新服务,立马生效
堡垒机推荐使用软件:jumpserver软件
官网:JumpServer-开源堡垒机-官网