一 、密码登录和密钥登录
SSH 全称 Secure Shell,用来取代传统 telnet 和 R 系列命令(rlogin,rsh,rexec
等)远程登陆和远程执行命令的工具。
SSH 是一种加密协议,不仅在登陆过程中对密码进行加密传送,而且对登陆后执行
的命令的数据也进行加密,即使别人在网络上监听并截获了你的数据包,并看不到其
中的内容。
SSH 服务都是由软件 OpenSSH 来提供的。绝大多数 Linux 安装包已自带。
OpenSSH 已经是大多数 Linux 操作系统的标准组件,不需要二次安装。
1、密码登录
工作原理:
- 1、服务端将公钥发给客户端
- 2、客户端将密码用服务端的公钥加密并发送信息给服务端
- 3、服务端用私钥将信息解密,并做对比,如果密码正确则请求成功
- 缺点:可以被中间人伪造成服务器骗取客户端密码
2、密钥登录
客户端发出授权请求时,服务端根据事先配置的密钥验证身份并授权
(1)工作原理
A、 Client-Server 打通公钥传递
a
客户端生成秘钥对,包括公钥、私钥
b
私钥配置在本地,将公钥发送给服务端
c
服务端将客户端的公钥加入到授权列表
B、 Client 登陆 server
a
当客户端请求登陆服务端时,服务器验证客户端的公钥是否存在,并用公钥
加密随机字符串 RS 生成 RE,发送给客户端,进行验证。
b
客户端用私钥解密 RE 后生成结果 RD,将结果返回给服务器端。
c
服务器端将 RD 与之前随机生成的 RS 比对匹配则授权,否则拒绝。
(2) 运行流程
a 客户端生成公钥私钥对 —id_rsa , id_rsa.pub ,默认放在 /root/.ssh/ 目录下
ssh-keygen -t rsa
b 将公钥以安全的方式传递到服务器 (~既是root)
scp id_rsa.pub root@192.168.0.126:~/
c 服务端将客户端的公钥加入到授权列表 (必须为authorized_keys,如果没有则创建)
cat id_rsa.pub >> ~/.ssh/authorized_keys
总结
Client 登录 Server
a) 客户端发出远程登录请求:ssh 用户名@服务器主机名或者 IP
b) 服务端查看是否有该客户端的公钥,如果有服务端生成随机字符串,
并用公钥加密(就是随机字符串与公钥作某种运算),发送给客户端。
c) 客户端使用本地的私钥对字符串解密(逆运算)。
d) 客户端将解密后的字符串结果发送给服务端。
e) 服务端将解密的字符串与原始字符串匹配,如果相等则验证通过,并
授权客户端可以登陆。
二、常用命令
ssh-keygen : 用于生成密钥,支持RSA和DSA两种认证密钥
sshd : SSH服务端程序
scp : 非交互式 sftp-server 的客户端,用来向服务器上传下载文件
ssh : SSH协议的客户端程序,用来登入远程系统或执行远程命令
从本地拷贝到远程:
scp -P 22 ~/input.txt root@192.168.0.126:~/
scp 远程ssh服务端口 本地文件路径 远程主机账户@远程主机IP地址或域名:要拷贝到远程主机的路径
从远程拷贝文件到本地
scp -P 22 root@192.168.0.126:~/input.txt ~/
scp 远程ssh服务端口 远程主机账户@ 远程主机IP地址或者域名:要拷贝的远程主机文件的路径 本地文件路径
从远程拷贝文件夹到本地
scp -rP 22 root@192.168.0.126:~/root/input ~/
三、SSH建立互信
IP ——- hostname
hostname是为了记忆容易
基本命令 :
hostname ——- 查看机器名
hostname 新机器名 ———- 暂时修改机器名(重启失效)
hostnamectl set-hostname 新机器名 —————- 永久修改机器名
DNS: Domain Name System 域名系统,解决域名到IP的对应关系查询问题<br /> /etc/hosts : 本机上的DNS,负责主机名称到IP的对应关系查询服务<br />
