密钥对免密登录"/>
linux网络服务[SSH安全远程管理]——————SSH的工作原理、账户密码登录、密钥对免密登录
文章目录
- 1. 什么是SSH
- 2.SSH的原理
- 2.1 账户密码
- 2.2 密钥对
- 3.用户密码验证
- 3.1 字符界面
- 3.1.1 输入用户名
- 3.1.2 不输入用户名
- 3.2 图形模式
- 4.密钥对登录
- 4.1 客户端操作
- 4.1.1 免密登录
- 4.1.2 私钥加密登录
- 4.2 服务端操作
1. 什么是SSH
SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全远程管理协议。
SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
默认使用tcp的22端口,会采用加密的密文方式进行传输。
Telnet在网络中采用明文传输,所以容易被抓取查看,不安全,所以被SSH取代。
2.SSH的原理
两种登录方式:
- 账户密码(口令)
- 密钥对
这两种方式都是让客户与服务端安全的登录连接在一起,之间传输的数据用密文传输。
用户要SSH连接服务器,首先要知道服务其中的账户和密码:
- 账户:/etc/passwd
- 密码:/etc/shadow
用户通过工具,将服务端的账户名和密码通过密文的方式打包发送给服务端,服务端查看其中的用户名和密码,在自己的文件中进行比对成功,最终建立连接。
如果是使用Telnet,用户名和密码的包就是明文传输,会被其他人抓取查看到,所以不安全。
2.1 账户密码
基于密码的安全认证就是我们一直在用的,只要知道服务器的SSH连接账号和密码(当然也要知道服务器的IP和端口(默认22)),就可以通过客户端远程登录到主机了,所以的传输过程都是加密的
只要你知道自己的帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密。
但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。
2.2 密钥对
不再使用密码,双向密钥对。
你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。
如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的公钥进行安全验证。询问服务器的系统下是否存有这个公钥?
服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。
客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。
与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。
3.用户密码验证
环境准备:
- 两台虚拟机,一台作为服务端server,一台作为客户端client1。
- 关闭防火墙
- 永久关闭selinux
3.1 字符界面
3.1.1 输入用户名
1)查看客户端与服务端的IP
[root@client1 ~]# ip addr show eth0 # 客户端ip
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 52:54:00:00:05:0b brd ff:ff:ff:ff:ff:ffinet 172.25.5.2/24 brd 172.25.5.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::5054:ff:fe00:50b/64 scope link valid_lft forever preferred_lft forever[root@server ~]# ip a # 服务端的ip
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 52:54:00:b2:1b:71 brd ff:ff:ff:ff:ff:ffinet 172.25.5.10/24 brd 172.25.5.255 scope global ens3valid_lft forever preferred_lft foreverinet6 fe80::4608:756c:3af9:e967/64 scope link valid_lft forever preferred_lft forever
2)删除客户端和服务端当前用户下的家目录下的/.ssh目录
[root@client1 ~]# rm -fr .ssh # 表示从来没有ssh的连接信息了
[root@client1 ~]# ls -a
. .bash_logout .config Downloads Music Templates
.. .bash_profile .cshrc .esd_auth Pictures Videos
anaconda-ks.cfg .bashrc Desktop .ICEauthority Public .viminfo
.bash_history .cache Documents .local .tcshrc
[root@server ~]# rm -fr .ssh # 没有连接信息
[root@server ~]# ls -a
. .bash_profile .dbus .tcshrc 图片 音乐
.. .bashrc .esd_auth .viminfo 文档
anaconda-ks.cfg .cache .ICEauthority .xauthlmCsfD 桌面
.bash_history .config initial-setup-ks.cfg 下载 模板
.bash_logout .cshrc .local 公共 视频
3)客户端通过用户密码的方式进行ssh登录连接:
[root@client1 ~]# ssh root@172.25.5.10
The authenticity of host '172.25.5.10 (172.25.5.10)' can't be established.
ECDSA key fingerprint is 46:14:77:1e:a0:f2:23:c3:66:24:23:76:ff:81:21:e5.
Are you sure you want to continue connecting (yes/no)? yes
# 输入yes
Warning: Permanently added '172.25.5.
更多推荐
linux网络服务[SSH安全远程管理]——————SSH的工作原理、账户密码登录、密钥对免密登录
发布评论