Linux网络服务–SSH安全远程管理(二)
1、什么是ssh
ssh是Secure Shell的缩写,是一个建立在应用层上的远程管理协议。ssh是目前较为可靠的传输协议,专为远程登录登录会话和其他网络服务提供安全性。利用ssh协议可以有效防止远程管理过程中的信息泄露问题。
ssh可用于大多数UNIX和类UNIX操作系统中,能够实现字符界面的远程登录管理,它默认使用22号端口,采用密文的形式在 网络中传输数据,相对于通过明文传输的telnet协议,具有更高安全性。
2、ssh的登录验证模式
ssh提供基于账户密码(口令)和秘钥对两种登录验证方式,这两者都是通过秘闻传输数据的。
账户密码验证:
账户密码登录认证过程中传输的是用户的账户名和密码,密码具有足够的复杂度 才能具有更高的安全性。Linux主机之间的远程管理工具是ssh命令,所以我们直接使用ssh进行远程登录。
格式:ssh 用户名@IP地址【ssh root@192.168.12.250】
windows远程登录Linux主机一般使用第三方工具,比如Xshell等工具
秘钥验证:
[1] 首先要在Client上创建一对秘钥,并且需要把公钥放在需要访问的Server上
[2] 当Client需要连接Server时,Client端的软件就会向Server端发出登录请求,请求使用闺蜜要对中 的公钥进行安全验证
[3] server收到请求之后,会在该用户的家目录下查询查询公钥文件,拿Client发送过来的公钥对中的公钥进行比较
[4] 如果两个公钥一致,Server就用公钥加密,“challenge(质疑)”,并把它发送给Client软件。Client收到加密内容之后,使用本地的私钥进行解密。再把解密结果发送给Server端验证成功后,允许登录
注意:若第3步骤对比结果失败,则Server端会通知Client端此公钥未在本级注册,无法验证登录。
3、配置ssh服务
[1] 环境准备
准备两台Linux操作系统主机,配置好相关的网络参数,实现可以正常通信,并将主机名修改为不同的名字。
临时关闭防护功能:
iptables -F #清空防火墙规则
setenforce 0 #l临时关闭selinux
永久关闭防护功能
chkconfig iptables off #设置防火墙开机不自启动
sed -i '7s/enforcing/disabled/' /etc/selinux/config #永久关闭SELinux
注意:以上两条命令执行后,需要重启服务器才能生效。
[2] 用户密码验证
Linux主机之间的远程管理工具是ssh命令,所以我们直接使用ssh进行远程登录。
格式:ssh 用户名@Ip
windows远程登录Linux主机一般使用第三方工具,例如Xshell等工具
格式:ssh 用户名@Ip
[3] 秘钥对验证
Linux主机之间秘钥对登录验证
(1)客户端生成秘钥对文件
ssh-keygen -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主机的指定用户下的指定公钥配置文件内,后面用哪个用户登录就放在谁家里,这里我们先用root用户做实验在root家目录下,找到.ssh目录,然后在里面创建authorized_keys文件,并且将公钥写进去
(3)使用windows尝试登录指定用户
[4] 禁止使用密码登录
当我们学会了使用秘钥对 进行验证后,建议生产环境下将账户密码登录功能关掉。
配置文件:/etc/ssh/sshd_config
选项:
passwordAuthentication no
注意:ssh配置文件中,并不是注释掉的就是不生效的没有写是默认生效的,需要修改时一定要取消注释在修改。
[5] 禁止使用root远程登录
root在系统中是一个可以为所欲为的角色,我们可以在平时的操作中用普通用户操作,在有需要修改一些系统设置的时候再从普通用户切换到root用户,这样可以最大限度的避免因为误操作,而对系统造成破坏,同时也可以 避免黑客在暴力破解后直接使用root用户扥估系统,一般在远程登录管理上我们会禁止直接使用root用户登录。
配置文件:/etc/ssh/sshd_config
选项:
PermitRootLogin no
[6] 修改默认端口,限制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
4、ssh服务相关命令
[1] scp:安全远程文件复制
scp是secure copy的缩写,用于在linux下进行远程拷贝文件的命令,类似于命令有cp,scp传输是加密的,所以可能会稍微影响一点速度。另外,scp还非常不占资源,不会提高多少系统负荷
格式:scp 本地文件 用户名@服务器IP:目录
scp /root/passwd root@192.168.88.100:/root -p 端口 #若端口不是默认22,则需要指定端口
[2] sftp:安全的文件传输协议
sftp是Secure FileTransferProtocol的缩写,安全 文件传送协议,sftp与ftp有着几乎一样的语法和功能。由于这种传输方式使用了加密/解密技术,所以sftp比ftp更安全一些,但传输效率比普通的FTP要低得多。
格式:sftp 用户名@服务器IP
sftp
-oPort=端口 #若端口不是默认22,则需要使用格式指定端口。
交互命令:
help:查看交互模式下支持呢些命令
pwd/lpwd:pwd是查看服务器所在的路径,lpwd是查看客户端所在的路径
ls/lls:ls是查看服务器当前目录下的文件列表,lls查看客户端当前目录下文件列表
put:将客户机中 的指定文件上传服务器
get:将服务器端的指定文件下载到客户机的当前所在路径。
rm:删除到服务器端的指定文件
quit:退出sftp的交互模式,断开和服务器之间的连接。