ssh登录的认证方式有:Password、RSA、DSA、ECC、Password-RSA、Password-DSA、Password-ECC和ALL。
1、Password认证
Password认证是一种基于“用户名+口令”的认证方式。通过AAA为每个SSH用户配置相应的密码,在通过SSH登录时,输入正确的用户名和密码就可以实现登录。
2、RSA认证
RSA认证是一种基于客户端私钥的认证方式。RSA是一种公开密钥加密体系,基于非对称加密算法。RSA密钥也是由公钥和私钥两部分组成,在配置时需要将客户端生成的RSA密钥中的公钥部分拷贝输入至服务器中,服务器用此公钥对数据进行加密。
3、DSA认证
DSA认证是一种类似于RSA的认证方式,DSA认证采用数字签名算法进行加密。
4、ECC认证
ECC认证是一种椭圆曲线算法,与RSA相比,在相同安全性能下密钥长度短、计算量小、处理速度快、存储空间小、带宽要求低。
5、Password-RSA认证
SSH服务器对登录的用户同时进行密码认证和RSA认证,只有当两者同时满足情况下,才能认证通过。
6、Password-DSA认证
SSH服务器对登录的用户同时进行密码认证和DSA认证,只有当两者同时满足情况下,才能认证通过。
7、Password-ECC认证
SSH服务器对登录的用户同时进行密码认证和ECC认证,只有当两者同时满足情况下,才能认证通过。
8、ALL认证
SSH服务器对登录的用户进行公钥认证或密码认证,只要满足其中任何一个,就能认证通过。
SSH结构层次
1、表示层
表示层主要涉及Struts的功能,在这一层,首先通过JSP页面实现交互界面,负责传送用户请求和接收响应,然后Struts根据配置文件将接收到的用户请求委派给相应的Action处理。
2、业务逻辑层
业务层主要涉及Spring的功能,在这一层,管理服务组件负责向Struts配置好的对应Action提供业务模型,该组件的对象数据处理组件完成业务逻辑,并提供事务处理等容器组件以提升系统性能和保证数据的完整性。
3、数据持久层
持久层主要涉及Hibernate的功能,Hibernate实现了数据持久化功能,使得程序员可以通过面向对象地编程思维来操作数据库。在这一层中,依赖于Hibernate的对象化映射和数据库交互,处理Spring中的DAO组件请求的数据,并返回处理结果。
从客户端来看,SSH提供两种级别的安全验证。
对于第二种级别,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有用户的私人密匙)。但是整个登录的过程可能需要10秒。
将本地用户生成的公钥推送至远程服务器后,远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。
这里不使用ssh-copy-id命令,改用下面的命令,来解释公钥的保存过程:
输入命令 ssh user@host ,然后根据提示输入远程服务器的登录密码
也可在配置文件/etc/ssh/ssh_config 中设置user和host(ip), 来简化命令, 配置如下:
配置后, 登录请求时只需输入如下命令:
使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
公钥登录原理 :就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果解密验证成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
执行上述命令首先会让你输入生成密钥的文件名: myPemKey (自定义),之后一路回车。
配置后,登录远程服务器时只需输入一下命令,便可直接登录成功:
修改后重启ssh服务
则远程连接时指定端口
(1) 通过iptables设置ssh端口的白名单,如下设置只允许192.168.1.0/24网段的客户机可以远程连接本机
(2) 通过/etc/hosts.allow里面进行限制(如下),/etc/hosts.deny文件不要任何内容编辑,保持默认!
例如:
修改远程服务器ssh服务配置文件/etc/ssh/sshd_config
修改远程服务器配置文件/etc/ssh/sshd_config, 如下:
如果本机系统有些账号没有设置密码,而ssh配置文件里又没做限制,那么远程通过这个空密码账号就可以登陆了,这是及其不安全的,所以一定要禁止空密码登陆。
修改远程服务器配置文件/etc/ssh/sshd_config,如下:
参考:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)