当前位置:   article > 正文

SSH服务_sshd addressfamily

sshd addressfamily

SSH服务:

学习服务的几个大点:

  • 是什么,掌握原理

  • 安装配置、调试、排错

  • 修改配置文件==》记录配置项

  • 日志–》排错

  • 安全

ssh是什么?(secure shell)

作用:远程控制、远程管理

  • ssh 是一个应用层的协议
  • openssh 是一个软件,底层使用ssh协议来远程管理服务器,这个软件是开源免费的。

远程登录程序(remote login program)

ssh是安全的解释器(安全外壳协议):把里面的数据进行加密(通常我们在网络上传输数据如果不加密的话是明文传输的)

windows上是没有ssh服务的,linux上默认就会安装

默认的端口是:TCP(面向连接、传输更加可靠) 22号口

图解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zF1KrZZa-1597925097945)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\1594606811748.png)]

telnet远程登录协议:

telnet是比较早期的远程登录协议,使用的是明文进行传输,后来被淘汰了,安全性不是很高==》默认端口为23号–》采用TCP协议

ssh能干什么?**

一个可以登录到远程的机器上执行命令的程序。

ssh是属于应用层的协议,利用ssh协议可以有效防止远程管理过程中的信息泄露问题。

ssh官方网站:

https://www.openssh.com/
  • 1

linux中默认安装的ssh服务是openssh(免费的)这个软件

在linux中查看openssh软件的方法:

rpm -qa|grep openssh   ==》查看软件包是否安装
  • 1

远程操作的工具:

ssh:远程执行命令、远程登录

scp:远程复制传输文件

sftp:远程传输文件

XShell:

xshell其实是windows里一个模拟的ssh客户端的软件

因为windows里默认没有安装ssh相关的软件,xshell就是这个软件

ssh的两种验证方式:==》基于公钥加密(非对称加密技术)

  • 1、密码登录
  • 2、密钥登录==》免密登录,十分的方便

ssh是如何加密和解密的?

使用的是非对称加密技术(基于公钥加密技术)

所谓的非对称加密就是使用公钥和私钥

主要有两种方式:一、数据加密传输;二:客户端和服务器的身份验证

两种用途:

  • ​ 数据加密
  • ​ 数字签名

对称加密和非对称加密:

  • 对称加密:即加密和解密都是使用的同一个密钥。
  • 非对称加密:加密使用的密钥和解密使用的密钥不相同,分别称为公钥(公开)、私钥(保密),非对称算法性能低,但安全性超强;能够加密的数据长度有限。

公钥(public key)和私钥(private key)

  • 它们是成对生成的,这两个钥匙互不相同,两个密钥可以相互加密和解密
  • 不能根据一个密钥而推算出另一个密钥
  • 公钥对外开放,私钥只有私钥的持有人才知道
  • 私钥应该由密钥的持有人妥善保管

**加密的算法:**使用不同的算法会使加密更加的安全

  • ecdsa ==》目前默认使用的加密算法
  • ed25519
  • rsa

加密算法和密钥的关系:

  • 加密算法:相当于工艺,它有着固定的流程

  • 密钥:密钥其实就是传递给加密算法的参数,不同的密钥加密出来的内容是不一样的。

密钥的两个用途:数据加密和数字签名

数据加密:

发送方使用接收方的公钥进行加密数据

接收方使用自己的私钥解密数据

数字签名:==》主要用于身份识别、然后再进行数据的加密

发送方:

​ 对原始数据执行HASH算法得到摘要值

​ 发送方用自己私钥加密摘要值

​ 将加密的摘要值与原始数据发送给接收方

接收方:

​ 用发送方公钥解密摘要值,同时对收到的原始数据同样执行HASH产生另一摘要值

​ 将解密的摘要值与产生的摘要值对比

OpenSSH:==》C语言编写的

Openssh是我们远程登录的主要软件,默认的情况下是安装的

主要的软件包是:openssh-server、openssh-clients

服务名:sshd ==》d 表示守护进程

sshd:是一个多进程的服务

服务端:

​ 主程序:/usr/sbin/sshd

​ 配置文件:/etc/ssh/sshd_config ==>主要学习服务器的配置文件

客户端:

​ 主程序:/usr/bin/ssh

​ 配置文件:/etc/ssh/ssh_config

使用ssh命令远程登录的三种方式:

  • ssh 用户名@服务器地址 -p 端口号
  • ssh -l 用户名 服务器地址
  • ssh 服务器地址 ==》默认会使用当前登录的用户名连接

远程连接并执行命令:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-izJJBfZi-1597925097981)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\1594629354517.png)]

ssh服务配置文件:

PermitRootLogin yes :表示允许root用户登录

如果设置了不允许root用户登录,就只能够使用普通用户进行登录

用户的信息存放在/etc/passwd

用户对应的密码存放在/etc/shadow

ssh登录使用的用户名和密码是linux里的/etc/passwd和/etc/shadow

但是普通用户的权限是有限的,如何让root用户能够登录linux系统给或者普通用户有root用户的权限?

​ sudo==》进行授权=》普通用户执行所有命令的时候在前面都要加一个sodu

​ su ==》切换

**注意:远程登录需要经过ssh服务的验证,使用su切换不需要经过sshd服务的验证,**所以我们先使用普通用户进行登录再使用su-进行切换时可以登录

#
#Port 22   端口号
#AddressFamily any  
#ListenAddress 0.0.0.0   监听本地所有的ipv4的IP地址
#ListenAddress ::    监听本地ipv6的IP地址
  • 1
  • 2
  • 3
  • 4
  • 5
  • PubkeyAuthentication yes -->支持密钥认证
  • PasswordAuthentication yes -->密码认证
  • PermitEmpty Passwords no -->允许密码为空
  • AuthorizedKeysFile .ssh/authorized_keys -->公钥存放的文件

man 5 sssh_config:查看配置文件,里面有对配置文件详细的介绍

修改配置文件要重启服务才会生效:

service sshd start
systemctl ssh start
  • 1
  • 2

普通用户登录如何使用高权限的命令?

查看端口号是否有人在使用:nc 192.168.0.122

nc -z 192.168.0.122  ==》表示不进行数据的交互
  • 1

SSH的日志文件:

/var/log/secure
  • 1

ssh系统加固的方法:

  • 修改ssh服务的端口

  • 禁用root用户登录

  • 只是允许部分用户可以登录

  • 启用密钥认证,禁用密码认证

  • 结合iptables限制远程登录ip地址

  • 与zabbix结合进行监控

  • 结合黑白名单

    • /etc/hosts.deny
    • /etc/hosts.allow

密码和密钥认证讲解:

密码认证:

​ 我们ssh默认使用的是密码认证,用户名存放在/etc/passwd和密码存放在/etc/shadow

密钥认证:==》更加安全

​ 需要公钥和私钥==》需要我们自己动手去配置

​ know_hosts 存放接受到的别的机器的公钥==>只要我们ssh连接一次某个linux就会产生.ssh/know_hosts

​ know_hosts文件存放在.ssh目录里==》/root/.ssh==>ls -a 可以查看

密钥认证的配置步骤:

准备:一台客户机,一台服务器

**第一步:**在客户机上root用户登录的情况下,创建密钥对

生成ecdsa类型的密钥对

[root@sanchuang ~]# ssh-keygen -t ecdsa
#默认存放的路径为/root/.ssh/id_ecdsa.pub
#生成的私钥是只有root用户才可以查看到的,公钥则是大家都可以查看
#-t :表示指定类型
  • 1
  • 2
  • 3
  • 4

在.ssh下生成了公钥和私钥,将公钥传输到服务器端

第二步:**将本地产生的公钥文件上产到需要控制的节点服务器里

注意:节点服务器最好允许root用户登录

[root@sanchuang .ssh]# ssh-copy-id -i id_ecdsa.pub root@192.168.1.141  
//如果端口号改了可以-p

#上传公钥到另外一台节点服务器上,这台服务器默认的端口是22,也没有禁用root用户登录
[root@sanchuang .ssh]# ssh-copy-id -i id_ecdsa.pub root@192.168.111.132
  • 1
  • 2
  • 3
  • 4
  • 5

第三步:验证免密通道是否配置成功,只要不需要输入密码,就配置成功。

验证:

ssh -p '2233' 'root@192.168.1.141'
  • 1
ssh root@192.168.111.132
  • 1

注意:我们公钥复制到哪个用户家目录里面,哪个用户就会生效,最好放到root目录里面,因为他的权限大

authorized_keys :存放别人上传到本机的公钥(别人给的)

known_hosts:是本机ssh过(连接别人)哪些机器,存放的是连接过的机器的公钥。(一般,我们要想连接其他的远程机器,那个机器会先给我们本机发一个公钥)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vdrumlSp-1597925097987)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\1594630850892.png)]

免密通道修建好了有什么好处?

  • ssh连接的时候不需要密码
  • 可以直接在远程的机器上执行命令
[root@sanchuang .ssh]#ssh root@192.168.111.132 mkdir /fengdeyong
[root@sanchuang .ssh]#ssh root@192.168.111.132 yum install tree -y
  • 1
  • 2
  • 把文件推到其他的节点服务器
scp -P 2233 monitor.sh root@192.168.1.141:/root
  • 1

免密通道是信任通道,分为单项信任(A方把公钥给了B方)和双向信任(A和B两个互相给了公钥)**

  • 可以从节点服务器上拉取文件到管理节点
scp -P2233 root@192.168.1.141:/etc/passwd
  • 1

附加一篇博客:https://blog.csdn.net/Inite/article/details/106875726

使用scp命令远程复制文件/目录:

  • ​ scp 用户名@服务器地址:源文件 目标路径

  • ​ scp 本地文件 用户名@服务器地址:目标路径

    如果复制的是目录,则需要添加“-r”选项

使用sftp命令从服务器下载文件

格式:sftp 用户名@服务器地址

get 文件 ==》下载

put 文件 ==》上传

^C[root@localhost ~]# sftp -P 4455 denglanlan@192.168.0.122
denglanlan@192.168.0.122's password: 
Connected to 192.168.0.122.
sftp> 

[root@localhost .ssh]# sftp denglanlan@192.168.0.122
denglanlan@192.168.0.122's password: 
Connected to 192.168.0.122.

sftp> get  -r dengkeai /lianxi 
Fetching /home/denglanlan/dengkeai/ to /lianxi/dengkeai
Retrieving /home/denglanlan/dengkeai
/home/denglanlan/dengkeai/keai  

sftp> put -r /lianxi dengkeai
Uploading /lianxi/ to /home/denglanlan/dengkeai/lianxi
Entering /lianxi/
Entering /lianxi/6_2
/lianxi/6_2/.mysql_shell.sh.swp                                                                                       100%   12KB   6.5MB/s   00:00    
/lianxi/6_2/mysql_shell.sh                                                                                            100%  976   507.3KB/s   00:00    
/lianxi/6_2/.mysql_shell.sh.swo                                                                                       100%   12KB   3.6MB/s   00:00    
/lianxi/6_2/py_mysql.py                                                                                               100%  259   173.3KB/s   00:00    
/lianxi/6_2/.py_mysql.py.swp                                                                                          100%   12KB  10.5MB/s   00:00    
/lianxi/6_2/.c_ommit.py.swp                                                                                           100%   12KB   5.1MB/s   00:00    
/lianxi/6_2/123.py                                                                                                    100% 2549     2.1MB/s   00:00    
Entering /lianxi/6-22
/lianxi/6-22/.nginx_编译.sh.swp                                                                                     100%   12KB   3.7MB/s   00:00    
/lianxi/6-22/123                                                                                                      100%   36    23.3KB/s   00:00    
Entering /lianxi/shell_file
/lianxi/shell_file/one_key_install_nginx.sh                                                                           100% 1856     4.4MB/s   00:00    
/lianxi/shell_file/scan_lan_port.sh                                                                                   100%  914     2.8MB/s   00:00    
/lianxi/shell_file/open_web_pc.txt                                                                                    100%    0     0.0KB/s   00:00    
/lianxi/shell_file/open_mysql_px.txt                                                                                  100%    0     0.0KB/s   00:00    
Entering /lianxi/ip配置
/lianxi/ip配置/show_ip.sh                                                                                           100%  485   260.7KB/s   00:00    
/lianxi/ip配置/show_ip.py                                                                                           100%  585   694.5KB/s   00:00    
Entering /lianxi/dengkeai
/lianxi/dengkeai/keai  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

!ls表示查看本地的文件内容:

sftp> ! ls
anaconda-ks.cfg					  mysql-community-embedded-compat-5.7.29-1.el7.x86_64.rpm  nginx-1.19.0
mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar	  mysql-community-embedded-devel-5.7.29-1.el7.x86_64.rpm   nginx-1.19.0.tar.gz
mysql-community-client-5.7.29-1.el7.x86_64.rpm	  mysql-community-libs-5.7.29-1.el7.x86_64.rpm		   python_note
mysql-community-common-5.7.29-1.el7.x86_64.rpm	  mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm	   source_code
mysql-community-devel-5.7.29-1.el7.x86_64.rpm	  mysql-community-server-5.7.29-1.el7.x86_64.rpm
mysql-community-embedded-5.7.29-1.el7.x86_64.rpm  mysql-community-test-5.7.29-1.el7.x86_64.rpm
sftp> ls
dengkeai  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

附加知识:

openssh软件默认在centos系统里已经安装,不需要额外安装

centos、Ubuntu、redhat、suse、debian、oracle linux、ali linux等支持ssh

http:明文传输 端口号80

日志:sshd没有记日志的功能,托付给rsyslog进行日志记录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8XOd0VIG-1597925097995)(C:\Users\86155\AppData\Roaming\Typora\typora-user-images\1594691679082.png)]

在TCP封装的时候,给端口号预留了两个字节的大小(16位),所以端口号是1-65535,1-1024已经分配了规定的端口。

在ssh配置文件中设置banner /etc/ssh/welcome.txt,把内容写到这个文本文件中就会有提醒。

tail命令:

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

命令格式:

tail [参数] [文件]  
  • 1

参数:

-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

id命令:

[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

  • 1
  • 2
  • 3

查看分区的挂载情况:df -Th

问题:

在配置文件中更改了端口号,重启服务时提示错误

[root@localhost ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
[root@localhost ~]# ssh denglanlan@192.168.0.122 -p 123
ssh: connect to host 192.168.0.122 port 123: Connection refused

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

解决办法:把selinux关掉即可

[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

https://www.cnblogs.com/presleyren/p/12118419.html

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

闽ICP备14008679号