SSH服务
SSH 的两种登录方式(基于C/S架构)
(1)基于口令的登录方式
1、客户端向服务器的 22 号端口发起连接请求
2、服务器端向客户端发送一个公钥
3、客户端使用该公钥对用户名和密码进行加密后,传输至服务器
4、服务器使用公钥对应的私钥进行解密,对比用户名和密码,通过后即可登录
(2)基于秘钥方式的登录方式
1、在客户端生成一对儿**对,将公钥发送至服务器端
2、服务端使用收到的公钥加密一串随机产生的字符,并发送给客户端
3、客户端接收到加密后的数据时,使用私钥进行解码,并将解密后的结果发送给服务器端
4、端对接收的数据与加密前的数据进行对比,对比成功后,客户端即可登录
注:公钥用于对数据加密,私钥用于对加密后的数据解密
配置SSH服务
1、环境准备
准备好两台Linux操作系统的主机,配置好相关网络参数,实现可以正常通信,并将主机名修改为不同的名字
临时关闭防护功能:
iptables -F -------------------------------------------------------- #清空防火墙规则
setenforce 0 ------------------------------------------------------ #临时关闭SELinux
永久关闭防护功能:
chkconfig iptables off ------------------------------------------ #设置防火墙开机不自启动
sed -i ‘7s/enforcing/disabled/’ /etc/selinux/config-------#永久关闭SELinux
注意:以上两条命令执行后,需要重启服务器才能生效
2、用户密码登录
Linux主机之间的远程管理工具是ssh命令,所以我们直接使用ssh进行远程登录
格式:ssh 用户名@IP地址
windows远程登录Linux主机一般使用第三方工具,比如Xshell等工具
3、**对验证
Linux主机之间的**对登录验证
1、客户端生成**对文件
ssh-****** -t rsa -b 2048
-t 指定加密类型(rsa/dsa等)
-b指定**对加密长度
询问1:执行过程中会询问保存位置,一般默认保存在当前用户家目录下.ssh/目录下
询问2:是否对**文件进行加密
加密:若加密,则在调用**文件时需要先验证**的密码,密码正确才能使用**文件
不加密:若不加密,则**文件可以直接被调用,整个登录验证过程无需输入任何密码,即为免密登录
2、将公钥文件上传至服务器端
ssh-copy-id 用户名@服务器IP地址
#该用户名和要用来登录服务器的用户名一致
3、客户端尝试登录服务器
ssh 用户名@服务器IP地址
#**对验证优先级大于账户密码验证
Windows使用**对登录Linux
1.使用Xshell自带的**对生成向导生成**对
2.将公钥导入Linux主机的指定用户下的指定公钥配置文件内后面用哪个用户登录就放在谁家里,找到.ssh 目录,然后在里面创建authorized_keys文件,并且将公钥写入进去
3.使用windows尝试登录指定用户
4、禁止使用密码登录
当我们学会了使用**对进行验证后,建议生产环境下将账户密码登录功能关掉
配置文件:/etc/ssh/sshd_config
选项:PasswordAuthentication no
注意:ssh的配置文件中,并不是注释掉的就是不生效的,有些是默认生效,需要修改时一定要取消注释再修改
5、禁止使用root远程登录root
避免因为误操作而对系统造成破坏,同时也避免黑客在暴力**后直接使用root用户登录系统,一般在远程登录管理上我们会禁止直接使用root用户登录
配置文件:/etc/ssh/sshd_config
选项:PermitRootLogin no
修改默认端口、限制ssh监听IP
修改默认端口:ssh 作为一个用来远程管理服务器的工具,需要特别的安全,默认情况下使用TCP的22端口,若不进行修改,很容易被利用遭到攻击,所以我们一般都会修改端口,尽量修改一个高位端口(范围1-65535)
配置文件:/etc/ssh/sshd_config
选项:
Port 59527
ssh -p 端口 用户名@服务器IP
限制ssh监听IP:有些服务器则安全级别更高一些,不允许使用外网直接登录,只有通过局域网才能登录,我们可以在机房里设置其中一台能够被外网远程连接,其他的主机都通过这个机器进行远程连接即可
配置文件:/etc/ssh/sshd_config
选项:
ListenAddress 192.168.88.100
ssh服务相关命令
scp:安全的远程文件复制命令
(1)将远程主机上的文件复制到本机
scp 用户名@主机名/IP:主机上的文件 本地目录
(2)将本地文件复制到远程主机
scp 本地文件 用户名@主机名/IP:目录
注:-r 复制整个目录
-P 端口#若端口不是默认22,则需要使用此格式指定端口
sftp:安全的文件传输协议
格式:
sftp 用户名@服务器IP
-oPort=端口 #若端口不是默认22,则需要使用此格式指定端口
交互命令:
pwd/lpwd:pwd是查看服务器所在路径;lpwd是查看客户端所在路径
ls/lls:ls是查看服务器当前目录下的文件列表;lls是查看客户机当前所在路径所有文件列表put:将客户机中的指定文件上传到服务器端
get:将服务器端的指定文件下载到客户机的当前所在目录