ssh网络协议(服务名sshd,端口22)

目录

前言

配置文件(/etc/ssh/sshd_config)

配置文件内容

自己可以添加的设置:

注意!:

ssh连接登录演示

scp文件传输

登录验证方式

密码验证登录

秘钥验证登录

配置ssh密钥对验证登录

[生成密钥对(ssh-keygen -t rsa)](#生成密钥对(ssh-keygen -t rsa))



前言

SSH网络协议是一种用于安全远程登录 和其他安全网络服务的协议,通过加密和认证机制在不安全的网络环境中提供安全的数据传输通道。SSH支持多种认证方式,包括密码认证和公钥认证。密码认证相对简单,但每次登录都需要输入密码;而公钥认证则可以实现免密登录,安全性更高,广泛应用于各种场合。ssh服务默认端口号为22,服务名称是sshd


配置文件(/etc/ssh/sshd_config)

配置文件内容

打开配置文件**/etc/ssh/sshd_config** 后可以看到一些比较重要的设置:

Port 22 端口号为22

LoginGraceTime 2m 登录验证时间为2m

PermitRootLogin no 禁止root用户登录

MaxAuthTries 3 最大登录尝试次数为3次

MaxSessions 10 最大连接数为10

PermitEmptyPasswords no 禁止空密码用户登录

PasswordAuthentication no 禁用密码验证登录

PubkeyAuthentication yes 启用秘钥验证登录


自己可以添加的设置:

AllowUsers s1 s2 [email protected] 只允许用户s1、s2和使用IP192.10.10.5的s3用户连接登录

DenyUsers s5 [email protected] 禁止用户s5和使用IP192.87.87.87的用户s6连接登录

AllowUsers 和 DenyUsers不能同时使用!!!


注意!:

在使用ssh前,服务机需要启用sshd服务 systemctl start sshd

关闭宽容模式 setenforce 0

关闭防火墙 systemctl stop firewalld

每次修改配置文件后都要重启服务 systemctl restart sshd


ssh连接登录演示

(演示:kali做客户机、centos7做服务机)

在kali中登录centos的stu1用户 :ssh [email protected]

此时可以操作stu1用户的目录和文件,切换到其他目录,修改重要文件。

可以通过修改服务机sshd服务的配置文件限制客户机权限。

192.168.189.111是服务机的IP地址

exit 退出登录:


如果服务机修改了端口号,比如·改为了666,则命令应该是:

ssh -p 666 [email protected]


在window上也是一样的操作


scp文件传输

scp命令是一个基于SSH协议的实用程序,用于在本地和远程主机之间安全地复制文件和目录。scp命令通过加密传输数据,确保数据在不安全的网络环境中的安全性和完整性。它不仅支持文件的上传和下载,还能复制整个目录,并保留文件属性。

将远程主机ceshi目录下的qq.txt文件复制到本机当前目录下的benji目录下:

scp [email protected]:/ceshi/qq.txt ./benji

将本地etc目录下的passwd文件复制到远程主机的xinxi目录下

scp /etc/shadow [email protected]:/xinxi

如果要复制整个目录包括目录下的所有文件,可以在scp后面加上-r


登录验证方式

密码验证登录

密码验证登录,通过使用自动生成的公钥-私钥对,来加密网络连接,然后使用密码进行认证。具体过程如下:客户端发送登录请求并接收服务器的公钥;输入密码后,密码被公钥加密并传输到服务器;服务器使用私钥解密并验证密码是否正确。如果验证成功,则建立连接。这种方法相对简单,但安全性较低,因为密码可能在网络上被截获,且易受到暴力破解攻击。

秘钥验证登录

密钥验证登录更为安全,它通过一对公钥和私钥来进行身份认证。客户端生成密钥对,将公钥存储在服务器上,私钥存储在客户机;连接时,服务器生成随机字符串并用客户端公钥加密,客户端使用私钥解密后返回结果,服务器比对成功后即允许登录。这种方式避免了密码在网络上的传输,从而显著提高了安全性。然而,配置过程较为复杂。当密码验证与密钥对验证都启用时,服务器会优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用, 启用密钥对验证方式。


配置ssh密钥对验证登录

生成密钥对(ssh-keygen -t rsa)

在客户端生成密钥对,可以看到私钥和秘钥的存储位置为:/root/.ssh/目录下面,即当前用户的

进入到用户家目录,查询所有文件,即可看到.ssh目录:

私钥默认生成在当前用户家目录中,可以不管;

需要将公钥id_rsa.pub改名为authorized_keys,然后上传到服务器(想要登录的用户的家目录的.ssh目录下):

mv id_rsa.pub authorized_keys

scp ./authorized_keys [email protected]:~/.ssh

这时,公钥authorized_keys在服务端的家目录的.ssh文件夹里

私钥id_rsa在客户端本机的家目录的.ssh文件夹里

关闭密码验证登录,打开秘钥验证登录,就可以用秘钥登录远程主机了:

可以看到,在秘钥验证登录时,可以直接登录进去。

秘钥验证登录相对于密码验证登陆来说,既安全,又快捷方便。


在windows中也是一样的,只需要将公钥上传到windows即可,使用finalshell连接linux:



相关推荐
_板栗_27 分钟前
HTTP 错误状态码以及常用解决方案
网络·网络协议·http
.生产的驴43 分钟前
Docker 部署Nexus仓库 搭建Maven私服仓库 公司内部仓库
java·运维·数据库·spring·docker·容器·maven
cwywsx1 小时前
Linux:进程控制2
linux·运维·算法
南棱笑笑生1 小时前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统下重新编译boot.img
linux·运维·ubuntu
为美好的生活献上中指1 小时前
java每日精进 5.11【WebSocket】
java·javascript·css·网络·sql·websocket·网络协议
小诸葛的博客3 小时前
Flannel UDP 模式的优缺点
网络协议·udp·php
愚润求学3 小时前
【Linux】基础 IO(一)
linux·运维·服务器·开发语言·c++·笔记
what_20183 小时前
分布式链路跟踪
java·运维·分布式
愚润求学4 小时前
【Linux】简单设计libc库
linux·运维·开发语言·c++·笔记