一、定义
ssh是一个建立在应用层上的安全远程管理协议,是目前较为可靠的传输协议,专为远程登录会话和其他网络服务提供安全性。利用 ssh 协议可以有效防止远程管理过程中的信息泄露问题。
ssh可用于大多数UNIX和类UNIX操作系统中,能够实现字符界面的远程登录管理,它默认使用22端口,采用密文的形式在网络中传输数据,相对于通过明文传输的Telnet协议,具有更高的安全性。
二、ssh的登录验证模式
1、账户密码验证
1)客户端发起连接请求
2)服务器向客户端发送公钥
3)客户端用公钥将密码信息加密,并发送服务器端
4)服务器端用密钥解密,并验证信息,合法则建立连接
格式:
ssh 用户名@IP地址
例:ssh root@192.168.190.10
2、密钥对验证
1)客户端需先创建一对密钥,并将公钥放在服务器端
2)当客户端发送连接请求时,将公钥发送到服务器端‘
3)服务器收到公钥与本地家目录里的公钥进行对比
4)两个公钥一致,服务器就用公钥加密一段“质疑信息”发送回客户端,客户端收到后,用自己的密钥文件解密,并把结果发给服务器端,服务器端验证成功后,建立连接
3、ssh密钥对验证模式
前提:客户机已经把自己的公钥放在了服务器上
1)客户端发送自己的公钥到服务器请求连接,服务器要求客户端接收自己的公钥文件
2)服务器接收客户端的公钥并验证是否和本地存放的一致
3)若不一致,拒绝,若一致,则使用该公钥加密一段质疑信息发送给客户端
4)客户端使用自己的私钥解密,然后再用服务器公钥加密,将结果返回
5)服务器用自己的私钥解密,若结果和发送的相同则成功建立连接
三、配置ssh服务
1、环境准备
准备两台虚拟机,配置好网络参数,并将主机名改为不同的名字,以便于测试。
对于新学习的人,建议关闭防火墙,selinux。
2、linux主机之间密钥对登录验证
1)客户端生成密钥对文件
ssh-keygen -t rsa/dsa -b 2048
-t 指定加密类型(rsa/dsa)等
-b 指定密钥对加密的长度
询问1:执行过程中会询问保存位置,一般默认保存在当前用户家目录下的.ssh/目录下
询问2:是否对密钥文件进行加密
若加密,则在调用密钥文件时需要先验证密钥的密码,密码正确才能使用密钥文件
若不加密,则密钥文件可以直接被调用,整个登录验证过程无需输入任何密码,即为免密登录
2)将公钥上传至服务器端
ssh-copy-id 用户名@服务器IP地址
3)客户端尝试登录服务器
ssh 用户名@服务器IP地址
ssh root@ip
3、禁止使用密码登录
当我们学会了使用密钥对进行验证后,想要禁用密码登录时使用。
配置文件:/etc/ssh/ssh_config
修改选项:
PasswordAuthentication no
4、禁止使用root远程登录
root远程登录权限过大,当我们需要修改一些系统设置时,我们可以用普通用户登录,再切换到root用户,此时,就可以禁止使用root登录。
配置文件:/etc/ssh/ssh_config
修改选项:
PermitRootLogin no
5、修改默认端口、限制ssh监听IP
1)修改默认端口
ssh作为一个远程管理服务器的工具,需要特别注意安全性,默认使用TCP的22端口,容易被攻击,因此我们可以修改一个高位的端口(1-65535)
配置文件:/etc/ssh/ssh_config
修改选项:
Port 54321
ssh -P 端口
2)限制ssh监听IP
配置文件:/etc/ssh/ssh_config
修改选项:
ListenAddress 192.168.88.100
四、ssh服务相关命令
1、scp:安全远程文件复制
格式:scp 本地文件 用户名@服务器IP:目录
```
scp /root/a.txt root@192.168.190.112:/tmp
```
-P 端口 若修改了端口,则用-P指定端口
2、sftp:安全文件传输协议
格式:sftp 用户名@服务器IP
-sPort=端口 若修改了端口,则用此格式指定端口
常用交互命令:
help:查看交互模式下支持哪些命令
pwd/lpwd 查看服务器、客户端的所在路径
ls /lls 查看服务器、客户端所在路径的所有文件列表
put : 将指定文件上传到服务器
get : 将服务器指定文件下载到客户端当前所在目录下
rm : 删除服务器指定文件
quit : 退出交互模式