day38 ssh免密码登录
day38 ssh免密码的登录
前言
今天的理论会偏多,原理想明白之后
你会发现,其实今天要学的就是几条命令,和创建几个文件而已
但是其中的原理,需要你搞清楚。----加油yzk
1.机器的准备

2.什么是SSH
SSH 或是 secure shell 协议是一种管理的协议,允许用户通过网络,控制和其远程的修改服务器。ssh服务器是为了确保进出远程服务器的通信,都以协议的方式进行。
它提供啦一种验证远程用户,将从输入客户端到主机以及输出转回客户端的机制。
ssh具有各种的功能,可以用于多种的场合,有些事,没有他是办不成的。
- 比如:程序员倒腾的硬件
- 机器人(树莓派)
- 远程登陆小车的系统(ubantu)
- ssh登陆服务器,操作服务器一样的。
2.1。ssh是一种网络的协议
简单来说:ssh是一种网络的协议,用于计算机之间的加密的登录
本文是针对openssh
- 生成安全的证书
- 提供ssh安全登陆的服务(openssh提供了加密的算法,对数据的加密,对数据的解密)
3.学习SSH的任务的背景

4.服务起的安全--sshd服务端的部署
软件安装
修改配置文件
启动
使用
1、搭建所有服务的套路
- 关闭防火墙和selinux(实验环境都先关闭掉)
- 配置yum源(公网源或者本地源)
- 软件安装和检查
- 了解并修改配置文件
- 启动服务检查运行状态并设置开机自启动
2、搭建SSH服务
这部分内容可以参考于超老师前面讲解的系统初始化篇操作即可
(一)关闭防火墙和selinux
(二)配置yum源
(三)软件安装
①确认是否安装openssh
由于每一台机器都是默认安装了sshd服务的,这里你可以采用期中综合架构里的任何一台机器测试。
[root@m-61 ~]#rpm -qa openssh
openssh-7.4p1-16.el7.x86_64
openssl 命令,给你用,去基于不同的算法,创建证书的命令
安装openssh服务,提供远程sshd服务
[root@m-61 ~]#rpm -qa openssh-server
openssh-server-7.4p1-16.el7.x86_64
# 默认yum有2个功能,1是安装,2是升级
yum install openssh-server openssh -y
免密码登录(重点哦)
- 公钥:一串字符串,在非对称加密里面用来加密数据,随意公开。
- 私钥:一串字符串,在非对称加密里面用来解密数据,不能泄露。
- 你原本是用root的密码进行身份验证,登录该服务器
- 客户端更换为公钥形式登录
- 普通密钥:一串字符串。在对称加密里面,加密和解密都用它。

1.创建windows机器的公私钥ssh-keygen生成密钥对
2.把Windows生成的公钥发给登录目标的机器ssh-copy-id 10.0.0.61 等于首次连接该机器,写入到机器中
3.输入到目标的机器,正确的密码后,目标的机器,会把客户的公钥,写入到(主机信任的key文件中)
4.以后,Windows在想登录master-61机器,用于认证的是Windows中的私钥。
基于公私钥的认证(免密码的登录)
1.windows 免密码登录Linux
1. 生成公私钥,客户端的
客户端的~/.ssh 这个目录,就存放了客户端机器的公私钥文件
$ ssh-keygen.exe
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/ASUS/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/ASUS/.ssh/id_rsa
Your public key has been saved in /c/Users/ASUS/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:tgJ+baDLPdlgriCl7d2LJDTl14MFm9/jqvnMn1XgZkI ASUS@yzk-computer
The key's randomart image is:
+---[RSA 3072]----+
| . |
| + |
| . o . E . |
| o = o . . |
| + o + S + + . |
| = o +o+ + = . |
|o + +oo++ . . |
| o * *+*.. o |
| . *.*==.o |
+----[SHA256]-----+
2.发给服务端
客户端的公私钥对以及有了,把客户端的公钥,发给服务端(~/.ssh/)
$ ssh-copy-id root@10.0.0.61
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/ASUS/.ssh/id_rspub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out anyhat are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now is to install the new keys
root@10.0.0.61's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@10.0.0.61'"
and check to make sure that only the key(s) you wanted were added.
在master 服务端查看公钥的信息 ~/.ssh
[root@master-61 .ssh]# cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZI2vrbGwOGxcVBzoVXRVsaj/UTnHTUcJ07pUDszLr9OoqwSwALRt2PrF6AEJ+IsIibwHH4zmWQv0Elejb1wmNCeCiqxMXcl8qr7OmbRESMcaNc/e2lhEmIFVriVH+ixWOFHyRZkYgsp4v05yzJd1BYzE0zUFeuCeKwXM/uSxxmHDyZAUMDSrkeiR1BzjJZZDvhe0ODv3CLI9glXajuGf6y1xFHHmreDDmWc1KYooRtcDNqavCgsE32PdbYOt05Q89Z7YOlNlb+8/5NJ+3p1Fh8S5rdGRlIQqSFNt90ImIaHBbJZ7DA34bQnCg3Mqug2Ap6xUmEhGwO8DfKUjXwLSieq1jZMDoQfLIS8zLOSH27M85OoVG+SOdBRH37Iyiae/IvdoXSXJLkbgL0M3JyAgMP3fzjRG3KfU7IsdEuIlWyV61hLzVo3rZGYbowdFY0p4yW0hrUIQvkj6yPokrvxMcx0b50d6LVIH0TZLJoGMsY72cpJgOS6BZ2u+yFHCspb8= ASUS@yzk-computer
4.此时已经可以免密登录了,只能通过git-bash这个工具去免密登录,因为记录该主机名
ssh root@10.0.0.61
2.linux免密码登录linx
master-61 免密码登录 web-7
1.先在mster-61机器生成公钥和私钥
ssh-keygen
[root@master-61 .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:mtdTAQX+ukDsNjWunXpmUasBKnExgdH97w9v664I6Fs root@master-61
The key's randomart image is:
+---[RSA 2048]----+
| .+.o oo. |
| . + .. . |
| o .. . |
| . ... .... |
| o .S.ooo. |
| . .* +o+o |
| .+ E ==. |
| . + *==.o. |
| o.o== .**. |
+----[SHA256]-----+
[root@master-61 .ssh]#
[root@master-61 .ssh]# ll
total 16
-rw------- 1 root root 571 Mar 26 02:36 authorized_keys
-rw------- 1 root root 1679 Mar 26 02:45 id_rsa
-rw-r--r-- 1 root root 396 Mar 26 02:45 id_rsa.pub
-rw-r--r-- 1 root root 170 Mar 26 00:14 known_hosts
[root@master-61 .ssh]#
2.master-61发送公钥给web-7服务器
[root@master-61 .ssh]# ssh-copy-id root@10.0.0.7
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/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@10.0.0.7's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@10.0.0.7'"
and check to make sure that only the key(s) you wanted were added.
#然后在web-7检查公钥
[root@web-7 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6l2UoY2q8C4nEx607qVb7jAZ+/6+EjqOuko8mB5iwAEv6kY2ubJHCAlwKRnc8MpZPGCRXHSlBHebmQK52v8fMFVRfGv6oxHwQT6F7VkMVvON26WX7xD2gyK7PJou1+oNRBl+KfY127f1ywY0W2G9pq6xLsEXUIesGYUgR1xXADIlHnU8Bezv+/pV+Zrs2C2XxEfKi+MNw+SEYhYjFhRjhr6hmUj2AO2y5WI68sX9gYQASLcAizJn8q7bvcrJsRK0S7enqE4ZB/isHFtBnDzWBGa86loQc6CQSL5dtME/SSbdut9eN7Ig/MNwjmgNuyiP6JZ1Usu90j3lUQsvgcNUp root@master-61
[root@web-7 .ssh]#
3.然后就可以免密码登录web-7
[root@master-61 .ssh]# ssh root@10.0.0.7
Last login: Wed Mar 26 02:16:55 2025 from 10.0.0.1
[root@web-7 ~]#
[root@web-7 ~]#
[root@web-7 ~]#

基于公私钥认证实践(重要)
免密登录步骤
检查web-7上的authorized_keys
检验master-61的公私钥文件
配置文件总结
练习题
1.准备master-61机器, web-7 web-8 nfs-31 rsync-41
让master-61可以免密登录这4台机器
操作吧
总结ssh原理的所有配置文件
为什么要学原理,就是在你出现各种bug,各种灵异事件的时候,心中有数,该如何从头、从尾,去找出问题,解决问题
ssh账户密码认证涉及的配置文件、命令、以及作用
口述+实践
ssh公私钥认证涉及的配置文件、命令、以及作用
口述+实践
SSH远程执行命令
查看远程机器的信息
查看主机名
[root@m-61 ~]#ssh root@10.0.0.8 hostname
root@10.0.0.8's password:
web-8
查看内存
[root@m-61 ~]#ssh root@10.0.0.7 free -m
total used free shared buff/cache available
Mem: 1982 108 1410 25 463 1666
Swap: 0 0 0
远程创建文件
[root@m-61 ~]#ssh root@10.0.0.7 touch /tmp/6666.png
远程安装软件redis
web7 redis
ssh root@10.0.0.7 yum install redis -y
远程删除redis
ssh root@10.0.0.7 yum remove redis -y
远程查看服务状态
远程查看web-7的nginx运行状态
ssh root@10.0.0.7 systemctl status nginx
ssh安全防御
安全因素
1.ssh支持密码连接、秘钥连接两个方式,为了密码别泄露,你得关闭密码登录
2.默认端口号全世界都知道是22,你得改掉
3.如果客户端私钥被窃取,root服务器也就危险了
ssh优化
提前配置好公钥登录
禁止密码登录,只允许公钥登录
[root@web-7 ~]#grep -Ei '^(pub|password)' /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
修改默认22端口
[root@web-7 ~]#grep -Ei '^(pub|password|port)' /etc/ssh/sshd_config
Port 22999
PubkeyAuthentication yes
PasswordAuthentication no
重启服务
[root@web-7 ~]#systemctl restart sshd
用master-61机器去登录他
[root@m-61 ~]#ssh root@10.0.0.7 -p 22999
Last login: Wed Apr 27 16:35:42 2022 from 10.0.0.1
[root@web-7 ~]#
用web-8机器也尝试登录web-7
发现是可以登录的
限制主机登录条件、设定iptables规则,只允许跳板机的流量(172.16.1.61)登录,其他机器的流量全部禁止。(只限定ssh的服务,限制22999的流量)

在想添加该规则的机器上执行
针对web-7限定只允许 master-61访问
[root@web-7 ~]#iptables -A INPUT ! -s 172.16.1.61 -p tcp --dport 22999 -j DROP
[root@web-7 ~]#
[root@web-7 ~]#
[root@web-7 ~]#iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- !172.16.1.61 anywhere tcp dpt:22999
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
浙公网安备 33010602011771号