目录
- [一、SSH概述]
- [1.1 SSH原理]
- [1.2 密钥管理]
- [二、SSH安全验证]
- [2.1 示例拓扑]
- [2.2 密码登陆]
- [2.3 密钥登陆]
- [三、SSH配置文件]
- [3.1 SSH的配置文件路径]
- [3.2 SSH的登陆端口和监听设置]
- [3.3 SSH的登陆用户设置]
- [3.4 SSH的登陆超时设置]
- [3.5 SSH登陆失败尝试次数]
参考:
- [尚硅谷Linux运维面试题(大厂linux面试题攻略)_哔哩哔哩_bilibili]
- [Secure Shell - 维基百科,自由的百科全书 (wikipedia.org)]
一、SSH概述
1.1 SSH原理
SSH以非对称加密实现身份验证。
SSH身份验证途径有两种:
第一种:自动生成密钥对,加密网络连接,然后使用密码认证登陆;
第二种:手动生成密钥对,公钥需要放在待访问服务器上,私钥自行保管,在访问时需要用私钥进行解密;(整个认证过程中私钥始终在本机,不会传输至网络)
SSH服务端只验证访问者是否拥有与公钥匹配的私钥,只要接受公钥并且密钥匹配服务器就会放行,那就意味着如果接受了攻击者的公钥,那么SSH服务端将会把攻击者也视作合法用户。
1.2 密钥管理
类Unix系统中,许可登陆的公钥通常保存在用户家目录下的
~/.ssh/authorized_keys
文件中。当远程机器持有公钥,本地持有相匹配的私钥,那么就可以实现免密登陆。
二、SSH安全验证
2.1 示例拓扑
2.2 密码登陆
第一种级别,基于密码的安全验证,通过账号密码就可以登录到远程主机,而且传输的数据会被加密。但是若有人冒充了对端服务器,就会被"中间人"攻击。
[root@vm1 ~] ssh root@192.168.122.200
root@192.168.122.200's password:
Last login: Sun Jun 27 22:42:29 2021 from 192.168.122.100
2.3 密钥登陆
第二种级别,基于密钥的安全验证,需要依靠密钥,由客户端创建一对密钥,并把公钥放在需要访问的服务器上。
通过命令
ssh-keygen
生成密钥:[root@vm1 ~] 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:Z91byIEjVajXDH53eyFsIXxi27Mx1/Bw12P0AYTYZM0 root@vm1 The key's randomart image is: +---[RSA 3072]----+ | =o*=+o.|
| ..OoEoo*|
| ooX++==|
| .+o%+==|
| S o.o.@.=|
| o . +.|
| . .|
| |
| |
+—-[SHA256]—–+ [root@vm1 ~] ll ~/.ssh/ total 12 -rw——-. 1 root root 2590 Jun 27 22:46 id_rsa -rw-r–r–. 1 root root 562 Jun 27 22:46 id_rsa.pub -rw-r–r–. 1 root root 177 Jun 27 22:00 known_hosts
在`~/.ssh/`目录下,会生成几个文件:
id_rsa:私钥。
id_rsa.pub:公钥。
known_hosts:访问的记录,已知hosts。
通过命令
ssh-copy-id
发送公钥到要访问的服务器上(vm1的公钥发送到vm2):[root@vm1 ~] ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.122.200 /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@192.168.122.200's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.122.200'" and check to make sure that only the key(s) you wanted were added.
测试免密登陆:
[root@vm1 ~] ssh root@192.168.122.200 Last login: Sun Jun 27 22:45:30 2021 from 192.168.122.100 [root@vm2 ~]
此时,vm1已经可以正常访问vm2。
此时vm2上的
~/.ssh/authorized_keys
记录了vm1的id_rsa.pub(vm1的公钥):[root@vm2 /] cat ~/.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+Msefk9KeGUHZsI4uudhsUHrB8UbB1MCF5sKKb7957iLUUseScwbja+nTk/+hcTix1WJa0maypv5MA+xJb0YlSSNeu4z9kO0rwu0s5vma67mKbwlngv0v6lpsRVpB4eU/E8x/uSCKE/P34wClPaxZoBfXLmSd3/mohiUdWUEI+NkN93KtArBRABgMT/iYUOb74o9G2N6PEMrdC3g2NaIzhOp3JSEIYIPS3IILp3refCxt+YgFy4yQN0S8E7sPdUEBnvT+KDz+KRJ1UQNeIdV9LOERnuVQB0w6pRI4N866teJdLHZxaPMbW3GQjHUP3ectkCBmNr30yNbiQFRjQ2gIk7dtSrfDuusb3cCVODU+YWoTroglATJNjJ4C3J+QUbeCoqUZDYcnONs4CD6Wwe1aqtwm1vOkFLA65vu5rFZPueeCdGzDpPUOOYXxFvIX3rp4SEGLFbcHrqmPOcLPkw7Ysk4igd+zwKquOP5ysOH87MK6jJwlsu8Qkr3coUTWA20= root@vm1
vm1的ip_rsa.pub(vm1的公钥)如下:
[root@vm1 ~] cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+Msefk9KeGUHZsI4uudhsUHrB8UbB1MCF5sKKb7957iLUUseScwbja+nTk/+hcTix1WJa0maypv5MA+xJb0YlSSNeu4z9kO0rwu0s5vma67mKbwlngv0v6lpsRVpB4eU/E8x/uSCKE/P34wClPaxZoBfXLmSd3/mohiUdWUEI+NkN93KtArBRABgMT/iYUOb74o9G2N6PEMrdC3g2NaIzhOp3JSEIYIPS3IILp3refCxt+YgFy4yQN0S8E7sPdUEBnvT+KDz+KRJ1UQNeIdV9LOERnuVQB0w6pRI4N866teJdLHZxaPMbW3GQjHUP3ectkCBmNr30yNbiQFRjQ2gIk7dtSrfDuusb3cCVODU+YWoTroglATJNjJ4C3J+QUbeCoqUZDYcnONs4CD6Wwe1aqtwm1vOkFLA65vu5rFZPueeCdGzDpPUOOYXxFvIX3rp4SEGLFbcHrqmPOcLPkw7Ysk4igd+zwKquOP5ysOH87MK6jJwlsu8Qkr3coUTWA20= root@vm1
三、SSH配置文件
3.1 SSH的配置文件路径
SSH文件存放在:/etc/ssh/sshd_config
3.2 SSH的登陆端口和监听设置
配置文件:/etc/ssh/sshd_config
,第17行。
Port 22 ssh服务监听端口
ListenAddress 0.0.0.0 ssh服务默认监听IP地址
3.3 SSH的登陆用户设置
配置文件:/etc/ssh/sshd_config
,第46行。
PermitRootLogin yes 是否允许使用root用户ssh登陆
3.4 SSH的登陆超时设置
配置文件:/etc/ssh/sshd_config
,第122行。
ClientAliveInterval 60 每60秒,服务端向客户端询问是否在线,不在就断开连接。
3.5 SSH登陆失败尝试次数
配置文件:/etc/ssh/sshd_config
MaxAuthTries 6 设置客户端登陆失败尝试次数为6次
原文创作:SkyBiuBiu
原文链接:https://www.cnblogs.com/Skybiubiu/p/14942684.html