|NO.Z.00005|——————————|^^ 构建 ^^|——|Linux&SshTcpRoot.V02|——|ssh|
一、什么是ssh
### --- 什么是ssh
~~~ ssh是secure shell的缩写,是一个建立在应用层上的安全传输管理协议,
~~~ ssh是目前较为可靠的传输协议,专为远程登录和其他网络服务提供安全性,
~~~ 利用ssh协议可以有效防止远程管理过程中的信息泄露问题。
~~~ ssh可用于大多数UNIT操作系统中,能够实现字符界面的远程登录管理。
~~~ 他默认使用22端口,采用密文的方式在网络中传输数据,
~~~ 相对与通过明文传输的Telnet协议,具有更高的安全性。
### --- ssh的登录验证模式:
~~~ ssh提供了基于账户密码(口令)和秘钥对两种登录验证方式,这两者都是通过密文传输数据的。

### --- 账户密码验证:
~~~ 账户密码登录认证过程中传输的是用户的账户名和密码,
~~~ 密码具有足够的复杂度才能具有更高的安全性,
~~~ Linux主机之间的远程管理工具是ssh命令,所以我们直接使用ssh进行远程管理。
~~~ 格式:
~~~ ssh用户名@IP地址
~~~ ssh root@192.168.88.20
windows远程登录linux主机一般使用第三方工具,比如xshell等工具。
### --- 密钥对验证:

### --- 首先需要在client上创建一对秘钥,并且需要把公钥放在需要访问的server上。
~~~ 当client需要连接server时,client端的软件就会向server端发出登录请求,
~~~ 请求使用秘钥对中的公钥进行安全验证
~~~ server收到请求之后,会在该用户的家目录下查询公钥文件,
~~~ 拿client发送过来的公钥和自己家目录下的公钥进行比较
~~~ 如果两个公钥一致,server就用公钥加密“challenge(质疑)”并把它发送给client软件,
~~~ client收到加密内容之后,使用本地的私钥进行解密,再把解密结果发送给server端,
~~~ server端验证成功后,允许登录
### --- 注意:
~~~ 若第三个步骤对比结果失败,
~~~ 则server端会通知client端此公钥未在本机注册,无法验证登录。

二、配置ssh服务:
### --- 环境准备:
~~~ 关闭selinux
[root@server11 ~]# vim /etc/sysconfig/selinux
# enforcing - SELinux security policy is enforced. // 默认是开启选项:selinux安全规则强制加载
# permissive - SELinux prints warnings instead of enforcing.// 通过打印警告信息来代替enforcing来强制加载,该关闭不是强制加载的,只会警告而不会限制。
# disabled - No SELinux policy is loaded. // 没有任何的selinux的规则时加载的
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted // selinux按什么样的规则加载
[root@server11 ~]# setenforce 0 // 0表示关闭状态,1是开启状态。selinux是绑定在内核上的。只有重启内核参数才可以生效。
~~~ selinux开启:行为控制机制;root的行为都会受到
### --- 临时关闭防火墙及selinux:
[root@server11 ~]# iptables -L
[root@server11 ~]# iptables -F
[root@server11 ~]# service iptables save // 保存防火墙规则
[root@server11 ~]# setenforce 0
[root@server11 ~]# sed -i '7s/enforcing/disabled/' /etc/selinux/config
### --- 永久关闭selinux及防火墙
[root@server11 ~]# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@server11 ~]# chkconfig iptables off
[root@server11 ~]# chkconfig iptables off
SELINUX=disabled
~~~ 重启机器
### --- 用户名密码验证
~~~ linux主机之间的远程登录管理工具是ssh命令,所以我们直接使用ssh进行远程登录
~~~ 格式:
~~~ ssh 用户名@IP地址
~~~ ssh root@192.168.88.20
~~~ windows远程登录linux主机一般使用第三方工具,比如xshell等工具
~~~ 格式:
[root@server14 ~]# ssh root@10.10.10.11
[root@server14 ~]# ssh 10.10.10.11 // 默认是root登录
root@10.10.10.11's password:
### --- 秘钥对验证:
### --- linux知己之间的密钥对登录验证
~~~ -t 指定加密类型(rsa/dsa等)
~~~ -b 指定秘钥对加密长度//
~~~ 询问1:执行过程中会询问保存位置,一般默认保存在当前用户家目录下的.ssh/目录下
~~~ 询问2:是否对秘钥文件进行加密
~~~ 加密:若加密:则在调用秘钥文件时需要先验证秘钥的密码,密码正确才能使用秘钥文件
~~~ 不加密:若不加密:则秘钥文件可以直接被调用,整个登录验证过程无需输入任何密码,即为免密登录
[root@server14 ~]# ssh-keygen -t rsa -b 2048
Enter file in which to save the key (/root/.ssh/id_rsa): // 将你生成的私有的秘钥对保存到地址家目录。直接回车
Created directory '/root/.ssh'.
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:
0e:bd:7f:e7:36:51:9f:bd:e2:7d:c8:c7:c6:ca:ab:f6 root@server11
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| . .|
| . S .+|
| o . ..o|
| o . =.|
| . ooB.*|
| .ooBEB.|
+-----------------+
### --- 将公钥文件上传至服务器中
[root@server14 ~]# ssh-copy-id root@10.10.10.15 // 该用户名和要用来登录服务器的用户名一致
### --- 客户端尝试登录服务器
~~~ windows使用秘钥对登录linux
### --- 使用Xshell自带的秘钥对生成向导生成秘钥对
[root@server14 ~]# ssh root@10.10.10.15 // 秘钥对验证优先级大于账户密码验证
Last login: Tue Feb 2 02:09:04 2021 from 10.10.10.2 // Last login上次登录这台机器的时间,密钥对的登录验证优先级要高于密码的登录优先级。
附录一:
### --- 环境准备:
~~~ 准备好两台linux操作系统的主机,配置好相关网络参数,实现可以正常通信,并将主机名改为不同的名字
~~~ 临时关闭防护功能:
iptables —F // 清空防火墙规则
setenforce 0 // 临时关闭selinux;
selinux开启:行为控制机制;root的行为都会受到
### --- 永久关闭后防护功能:
chkconfig iptables off // 设置防火墙开机不自启动
sed -i ‘7s/enforcing/disabled/' /etc/selinux/config // 永久关闭selinux
~~~ 注意:以上两条命令执行后,需要重启服务器才能生效,切记。
### --- 用户密码验证:
~~~ linux主机之间的远程登录管理工具是ssh命令,所以我们直接使用ssh进行远程登录
~~~ 格式:
~~~ ssh 用户名@IP地址
~~~ ssh root@192.168.88.20
~~~ windows远程登录linux主机一般使用第三方工具,比如xshell等工具
~~~ 格式:
~~~ ssh root@yeah.net192.168.88.20
### --- 秘钥对验证:
### --- linux知己之间的密钥对登录验证
~~~ -t 指定加密类型(rsa/dsa等)
~~~ -b 指定秘钥对加密长度
~~~ 询问1:执行过程中会询问保存位置,一般默认保存在当前用户家目录下的.ssh/目录下
~~~ 询问2:是否对秘钥文件进行加密
~~~ 加密:若加密:则在调用秘钥文件时需要先验证秘钥的密码,密码正确才能使用秘钥文件
~~~ 不加密:若不加密:则秘钥文件可以直接被调用,整个登录验证过程无需输入任何密码,即为免密登录
ssh-keygen -t rsa -b 2048
### --- windows使用秘钥对登录linux
### --- 使用Xshell自带的秘钥对生成向导生成秘钥对
### --- 将公钥文件上传至服务器中
~~~ 秘钥对验证优先级大于账户密码验证
~~~ ssh 用户名@服务器IP地址
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv007-network
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!