SSH
常用远程连接软件
-
Putty:PuTTY为一开放源代码软件,只有500多k,小巧轻便,但功能单一
-
SecureCRT:SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。缺点是颜色方案不符合大众习惯
-
XShell:Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。缺点:收费
-
MobaXterm:功能强大且免费
SSH
概述
-
SSH是一种网络协议,用于计算机之间的加密登录。用户可以从本地计算机,使用SSH协议远程登录另一台计算机。
-
sshd服务该服务基于SSH协议,用于远程连接,服务随系统自动安装
-
sshd服务
- 22端口
- TCP协议
-
基于C/S架构,客户端ssh,服务端openssh
加密算法
对称加密算法(DES)
-
发送方使用密钥将明文数据加密成密文,发送出去
-
接收方收到密文后,使用同一个密钥将密文解密成明文
非对称加密算法(RSA)
- 公钥跟私钥一一对应,公钥可公开,私钥自己私有
- 接收方将公钥发给发送方
- 发送方使用接收方发送过来的公钥将明文数据加密成密文,发送出去
- 接收方收到密文后,使用自己本地留存的私钥将密文解密成明文
DES&RSA比较
比较项 | 对称加密 | 非对称加密 |
---|---|---|
密钥 | 相同 | 不同,但有对应关系 |
加密速度 | 较快 | 较慢 |
数据传输速度 | 较快 | 较慢 |
安全性 | 较低 | 较高 |
SSH认证
基于用户名密码认证
原理
-
客户端向服务端发起一个登录请求
-
服务端将自己的公钥发送给客户端
-
客户端使用服务端发过来的公钥将自己的密码加密并且发送给SSH服务端
-
服务端收到客户端发过来的加密密码后使用本地留存的私钥进行解密
-
服务端将解密出来的密码和
/etc/shadow
文件里的用户密码对比认证 -
服务端认证成功,则返回登录成功结果,并发送一个随机会话口令给客户端,该口令用于后面两台主机进行数据传输的一个临时加密会话口令
远程连接
获取服务端的ip
[root@server ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:76:f9:7d brd ff:ff:ff:ff:ff:ff
inet 192.168.226.10/24 brd 192.168.226.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::1b78:bfb3:4567:b45c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
ip地址为192.168.226.10
输入设置的密码即可登录
[root@client ~]# ssh root@192.168.226.10
root@192.168.226.20's password:
Last failed login: Sat Aug 21 15:46:55 CST 2021 from node1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Sat Aug 21 15:35:38 2021 from 192.168.226.1
基于密钥对认证
原理
- 在客户端生成一个密钥对(公钥和私钥)
- 客户端将公钥发给服务端,服务端将其保存在~/.ssh/authorized_keys
- 客户端发起向服务端发起一个登录请求,服务端比对公钥(再次发来的公钥与保存在~/.ssh/authorized_keys中的公钥是否一致)
- 比对一致后,服务端会生成随机字符串,再通过客户端发来的公钥加密
- 服务端将加密后的字符串发送给客户端
- 客户端收到后,通过本地私钥解密,然后将解密后的字符串发回非服务端
- 服务端比对字符串,验证与生成的字符串是否一致
- 一致,即可登录成功能
免密登录
客户端主机中生成“密钥对”
[root@client ~]# ssh-keygen #一直回车即可
Generating public/private rsa key pair.
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