linux ssh远程访问及控制
Posted 可乐卷儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux ssh远程访问及控制相关的知识,希望对你有一定的参考价值。
文章目录
一、SSH远程访问
1、概念
ssh(secure shell)是一种安全性协议,端口tcp22端口,是应用层协议,
与telnet的区别:
- telnet是明文传送;ssh是加密传送,并且支持压缩。
- telnet的默认端口号为23;ssh的默认端口号为22.
- ssh使用公钥对访问的服务器的用户验证身份,进一步提高的安全性;telnet没有使用公钥
2、系统服务-openssh
2.1、系统软件包
OpenSSH是linux系统的服务,随系统安装就安装,默认加入开启自启程序中。
系统的软件包
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
2.2、服务名称:sshd
/usr/sbin/sshd #服务端主程序
/etc/ssh/sshd_config #服务端配置文件
/etc/ssh/ssh_comfig # 客户端配置文件
rpm -ql openssh-server #查询客户端安装的软件
rpm -ql openssh-clients #查询服务端安装的软件
tail /var/log/secure #ssh的日志目录,用于排错
2.3、服务端配置文件参数详解
以下主要讲解现网当中经常使用到的参数
每启一个进程/服务,都会在var/目录下穿绳一个服务名.pid文件,这个文件记录了目前的pid号
3、实操
3.1、实验环境准备
注意事项:
在所有虚拟机操作需要关闭三个内容
systemctl stop firewalld #关闭防火墙
systemctl stop NetworkManager #关闭网络服务管理
getenforce #查看Selinux状态
setenforce 0 #关闭SElinux
其中setenforce 0 是临时关闭SElinux,永久配置方式
vim /etc/selinux/config
配置完成之后reboot重启虚拟机生效
3.2、ssh远程登录
3.2.1、未更改端口号
服务机更改名字为server
更改任何配置文件时,先备份
cp -p /etc/ssh/sshd_config{,.bak}
查询发现已有备份文件
编辑服务端主程序
vim /etc/ssh/sshd_config
更改端口号,随便数字147关闭用dns做域名解析
把UseDNS设置成no,关闭用dns做域名解析;否则客户端登录连接会很慢
systemctl restart sshd #重启服务
ssh -t:检查ssh文件的语法错误
linux系统之间互相登录使用ssh命令
ssh root@服务端的ip #客户端远程登录服务端时,使用命令
ssh -p 147 root@192.168.35.100(未更改端口号可以直接登录)
此处因为更改了端口号,直接登录无法登录;提示端口号问题
3.2.2、更改端口号
更改端口号,客端户远程登录的2种方式:
- -p:端口号
- 进入客户端配置文件/etc/ssh/ssh_config 更改端口号,更改与服务端一样的端口号即可直接登录;客户端更改配置文件无须重启服务
vim /etc/ssh/ssh_config
3.3、PermitRootLogin no #禁止root用户登录
不给root登录,主配置文件更改为no 去掉注释#
编辑服务端配置文件 vim /etc/ssh/sshd_config
systemctl restart sshd #重启服务
客户机用root远程登录服务机时,发现可以输入密码,但是一直让你输入密码且次数时3
3.4、MaxAuthTries 6 #重试次数
这里要说到配置文件内的一个参数
配置认证尝试次数MaxAuthTries,默认是6次 “MaxAuthTries 6”
但是实际输入错误3次就退出了,是因为客户端配置里有一 项参数NumberOfPasswordPrompts的默认值是3;所以我们只能尝试登3次,这里是指客户端的尝试次数,服务器的是认证次数,服务器能认证几次取决于客户端能登陆几次!
客户端的尝试次数可以通过命令更改
-o:此linux是客户端,带选项表示可以尝试登录8次,但是服务器限制客户端只有6次认证的机会,所以只有六次,最大值就是6次
3.5、黑白名单
- AllowUsers:白名单;仅允许
- DenyUsers:黑名单;不允许
- 黑白名单同时存在,黑名单优先
- 配置方法
白名单/黑名单在服务端的主配置文件增加一行,位置随意
服务端创建新用户 lll
以下分四种情况说明黑白名单的作用 - 服务端主配置文件黑白名单都不配置时,客户端任何用户均可远程连接
客户端远程连接 lll
- 服务端只配置白名单时,此时我们只配置root,验证结果
此时用户lll不在白名单里面无法远程交互
- 用户lll同时加入黑白名单,发现黑名单优
输入三次密码,告知不被许可连接
- 黑白名单可以允许用户指定的主机登录
这时就可以在192.168.35.20的主机上远程连接客户端
二、SSH秘钥对验证
1、概述
SSH协议是采用了基于密钥的安全验证方式用于远程管理的,需要依靠密钥,也就是必须事先建立一 对密钥对,然后把公用密钥(锁头) (Public key)放在需要访问的目标服务器上,另外,还需要把私有密钥(钥匙) (Privatekey)放到SSH的客户端或对应的客户端服务器上。
2、加密算法
2.1、对称加密
- 概念
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用 - 常用算法
在对称加密算法中常用的算法有: DES、3DES、 TDEA、 Blowfish、 RC2、RC4、 RC5、 IDEA、 SKIPJACK等。 - 特点
- 加密方和解密方使用同一个密钥;
- 加密解密的速度比较快,适合数据比较长时的使用;
- 密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
- 优缺点
对称加密算法的优点是算法简单,速度快;
对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露, 那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一 秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
2.2、非对称加密
- 概念:
发生方和接收方在本地都会产生一对私钥和公钥;非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥) 和私有密钥(privatekey:简称私钥) 。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 - 常用算法
- RSA (RSA algorithm) :目前使用最广泛的算法
- DSA (Digital Signature Algorithm) :数字签名算法,和RSA不同的是DSA仅能用于数字签名, 不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
- ECC (lliptic curve cryptography, 椭圆曲线加密算法)
- ECDSA: Eliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和DSA的结合,相比于RSA算法,ECC可以使用更小的秘钥,更高的效率,提供更高的安全保障
- 原理
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致, SSH服务器就用公钥加密"质询" (challenge)并把它发送给SSH客户端。 - 特点
私钥不能在网络中传输,私钥可以解密公钥
公钥可以在网路中传输,公钥不能解密私钥
3、实例了解签名、公钥、私钥
实例1
L发送数据W给Z,需要使用Z的公钥加密W,Z用私钥打开得到W
若有一个Y发送带有病毒的Z的公钥1给Z,那么Z会使用私钥打开公钥1,就会中病毒,为了防止这种情况产生,会在L上使用私钥加上签名,为了让Z识别,Z通过签名识别是L发送的公钥,Z使用自己的私钥打开公钥W
实例二:
那么在ssh层面,虚拟机时如何加密解密的
客户端和服务端连接过程如下:
- 用工具制作公钥和私钥
client产生公钥和私钥
server产生公钥和私钥 - 第一次建立连接时,客户端把公钥发送给server,server保存客户端的公钥
- 当真正需要建立连接时,客户端带着公钥一并发起建立连接的请求
- 若客户端的公钥与server接收的客户端的公钥一致
- 这时server会拿客户端的公钥加密一串随机的数据发货给客户端,客户端拿自己的私钥解密这串数据,发送回给服务端
- server收到客户端解密国购的数据,发现就是服务端加密的数据,这时就认为此客户端是受信任,允许建立连接
- 若客户端的公钥与server接收的客户端的公钥不一致
server会要求客户端再次发生公钥给其,再验证一次,验证成功之后就是客户端的公钥与server接收的客户端的公钥一致
4、实操
实验要求:在服务机上实现无密码的远程交互和加密远程交互
总结就2步:
- 用工具制作公钥和私钥
- 把公钥发给服务器
- 具体如何验证公钥和私钥,就是底层的问题了
4.1、免密交互
1、在客户端制作公钥和私钥:
ssh-keygen #创建公钥和私钥
-t:选择密码算法,默认RSA #可不写
ssh-copy-id root@192.168.245.100 #把公钥id传到服务端root用户
ssh-copy-id -i 指定文件的路径 root@192.168.245.100 #把公钥id安装指定文件路径传给服务端root用户;一般不需要指定
authorized_keys #记录公钥文件,在服务端;目录如下
也可以看一下服务端的公钥内容,发现与客户端是一致的
cat ip_rsa_pub
known_hosts #记录建立连接的用户记录,多个客户端连接时追加的形式写入
验证登录密码,发现无须使用密码,即可实现远程交互
4.3、加密交互
给客户端的私钥加密
切换到.ssh/目录下看下加密之后的私钥文件 id_rsa
这个是没有加密的私钥文件,可以看出来与加密之后还是有区别的
把公钥id传到服务端root用户
在客户端远程登录出现需要输入私钥的秘钥
这时密码校验完成登录成功
三、SSH的通信模式
ssh包含了scp(安全复制,非交互式)和sftp协议(安全传输,交互式);s是secure,安全的意思
1、非交互式-scp安全复制
本机传到服务器
查询服务端已有文件
服务器传本机
scp -rp:带属性递归复制;用法和cp一样
服务端查询已有ll文件
若更改了端口号时复制
需要使用大写的P指定端口
2、交互式-sftp安全传输
put #上传
get #下载
ls:查看连接的服务器的目录下
lls # 执行命令的目录下 如上图在tmp目录下执行sftp命令
以上是关于linux ssh远程访问及控制的主要内容,如果未能解决你的问题,请参考以下文章