您的位置:首页 > 其它

ssh远程登陆配置、公私钥密码ssh体系构建

2020-07-14 06:04 127 查看

一、远程登陆服务openssh
openssh服务器提供ssh远程加密登陆,常用于公网,加密数据传输过程中安全,默认装机最小化时候也是装好的,sshd服务配置文件是/etc/ssh/sshd_conf,ssh协议的端口号默认是22,以防别人发起端口***,现网中正常都是换1024以上的端口号,1024以内一般都有使用需求
talent:远程登陆 默认端口号23,明文传输常用于局域网
配置文件/etc/ssh/sshd_config功能详解
二、用户登陆控制

port 22 // 端口22
listenadderss // 服务器所有网卡可以监听,那么只要连服务器任何一块网卡都可以去享受这个ssh服务

LoginGrace Time // 登陆验证时间 2min
PermitRootLogin NO //不允许root登陆——》现网中都是以普通用户身份登陆,输入用户名密码切换到系统安全shell环境,su - 切换成root,这是安全的意识
maxauthtries //最大重试次数
当允许或者禁用某些用户登录时候 allowusers denyusers,不要同时出现,要么允许谁,要么禁止谁
Allowusers tom jack lucu @192.168.10.40 // 允许这三个人登陆10.40这个服务器 这个不是配置文件里面默认的选项,需要手动添加
所以会有这么个需求,root用户不能远程登陆,普通用户登陆进去su - root这么个说法,就是通过这两条语句实现
PermitRootLogin NO
Allowusers tom jack lucu @192.168.10.40
注意这个allow只允许,deny很强大,他优先级优先只允许谁登陆,后面把PermitRootLogin NO改成yes ,要把这个allow去掉或者里面加上root,容易出错的地方
三、登陆验证方式
首先来了解一下,加密验证的三种方式
对称加密:加密方和解密方密码一致验证,常见的就是用户名的密码验证,服务器上记录了这个用户名的密码,你输入了这个用户名的密码,一致,验证通过。优势:简便 。劣势:从客户端来看正在连接的服务器容易被假冒,就是你拿到了tom密码,就一定说明你就是tom这个人吗,从服务器来看,
此种加密容易遭到密码的穷举暴力破解
非对称加密:加密密码和解密密码不一样,简称为秘钥对,公私钥。加密一个文件出现一对密码,一个公钥,一个私钥,私钥加密,公钥解密 通常先在客户端创建一对秘钥文件产生关联识别的公私钥(通过一定算法认识彼此),私钥客户端存着,公钥文件放在服务器指定位置,客户端远程登陆服务器时,系统看到私钥,会比对公钥库,进行公私钥关联验证,如过有通过,没有不通过,所以服务器就有公钥文件库,每个客户端都有一把私钥,客户端来连接我服务器,好,出示私钥,我来比对公钥库,有没有公钥来和你进行匹配验证通过,有通过,没有走人,所以你看到服务器公钥上没有用,无法用公钥推算私钥,这和公私钥产生的数学算法有关,得有私钥匹配才行。

单向加密:文件加密后不解密,多用于验证,哈希值加密,密文用来验证文件完整性,举个例子,网上有个软件包,哈希密文是一个值,你通过不管是网络还是什么渠道下载到自己电脑里,如果软件包的哈希值还是一样,那么就说明软件包很纯净,我不需要解密,只需要对比,这就是单向加密。
总结:在现网中,对于安全性要求较高服务器,建议禁止用户名密码登录方式,采用秘钥对,如果配置文件中两种方式都启用,默认秘钥对优先
passwdauthentication yes // 启用密码验证
pubkeyauthentication yes // 启用秘钥对验证
AuthorizedKeysFile .ssh/authorized_keys //指定公钥文件库,收集各个客户端的公钥存放在一起
四、客户端登录方式
如果你的客户端是微软,你可以使用微软上的xshell,putty等第三方软件远程登陆ssh服务器,这是我们比较常见的,在现网中也可以使用一台linux登陆另一台linux,这都是没有问题的,openssh客户端由openssh-clients软件包提供(默认装好),其中包括ssh远程登陆命令,scp,sftp远程复制和文件传输命令等,实际上,任何支持ssh协议的客户端都可以域openssh服务器进行通信,微软上通过第三方软件进行,比如xshell,putty。
4.1、用户名密码登录
4.1.1、ssh远程登陆
ssh 用户名 @服务器 -p 指定端口
ssh tom@192.168.10.30 -p 1098

服务器不是有用户名密码呀tom 123 ,输入ssh tom@192.168.10.30就是相当于你坐在这台10.30服务器旁边一样,你拥有了10.30服务器的一切什么bash环境啥的

4.1.2、scp远程复制
ssh可以远程登陆,但是你就是对方了,登陆如果对目标服务器进行维护修改操作还行,可是我怎么把上面文件传输到我真实的电脑上呢,那就用到scp命令,格式需要注意,scp是在客户机自己身上敲的代码不是服务器
通过scp命令利用ssh的安全连接与远程主机相互复制文件,相当于登陆其实,只不过可以远程登陆服务器把上面文件复制到自己真实电脑上
你可以从服务器下载文件到客户机,也可以从客户机上传文件到服务器
下载格式:scp 用户名@目标服务器 :绝对路径服务器上文件 绝对路径本机文件(重命名)
scp root@192.168.10.30:/etc/passwd /root/pwd.txt
用root身份登陆10.20这个服务器 去复制passwd文件到自己家目录下并且重命名为pwd.txt

上传格式
scp -r /etc/passwd root@192.168.10.30: /opt
把自己本机文件passwd 以root身份登陆到对方服务器并且复制到对方服务器opt目录下


4.1.3、sftp 安全 FTP
通过 sftp 命令可以利用 SSH 安全连接与远程主机上传、下载文件,采用了与 FTP 类似的登录过程和交互式环境,便于目录资源管理,实现文件上传下载的便捷高效性
sftp root@192.168.10.30 //sftp登陆10.30这个服务器
10.40根下有个kaka空文件 10.30根下有个lala空文件,10.30是远程连接主机,10.30是本地

put /kaka / 把本地根目录下kaka文件上传到远程主机根目录下
get /lala / 把远程主机根下lala文件下载到本机根目录下
五、构建密钥对验证的ssh体系
作用:每一个用户公私钥匹配才能登陆,远程登陆中提供了比用户名密码更好的安全性,无法用穷举法暴力破解
注意:密钥对要以用户的身份生成,我们验证的用户登陆系统的匹配机制,非对称加密密钥对和对称加密的密码
步骤一:ssh客户端以zhangsan身份创建密钥对
步骤二:将zhangsang的公钥上传到服务器端
步骤三:将zhangsang的公钥给lisi的保管,这里需要理解一下,说白了就是一一对应法则,公私钥要以与用户为媒介,客户端有zhangsan这个用户,拿着自己的私钥,把公钥给了服务器上的信的过的lisi用户保管,当zhangsan拿着自己私钥要登录系统时候,服务器上lisi拿着zhangsan的给的公钥对比一下,过了zhangsan就验证通过lisi登上服务器,你登录服务器的权限是服务器给lisi的权限,不对就登不上去,公私钥匹配,怎么匹配,客户机和服务器上各自保管秘钥的用户拿着跑过来匹配,私钥配公钥,zhangsan配lisi。
步骤四:秘钥对验证登陆


1.在客户端用zhangsan创建密钥对
在 Linux 客户端中,通过 ssh-keygen 工具为当前用户创建密钥对文件。可用的加密算法为 ECDSA 或 DSA(ssh-keygen 命令的“-t”选项用于指定算法类型)。例如,以 zhangsan用户登录客户端,并生成基于 ECDSA 算法的 SSH 密钥对(公钥、私钥)文件,操作如下所示。






2、将公钥文件上传至服务器
将上一步生成的公钥文件上传至服务器,并部署到服务器端用户的公钥数据库中。上传公钥文件时可以选择 SCP、FTP、Samba、HTTP 甚至发送 E-mail 等任何方式。例如,可以通过 SCP 方式将文件上传至服务器的/tmp 目录下。

3.在服务器中导入公钥文本到lisi中
在服务器中,目标用户(指用来远程登录的账号 lisi)的公钥数据库位于~/.ssh 目录,默认的文件名是“authorized_keys”。如果目录不存在,需要手动创建。当获得客户端发送过来的公钥文件以后,可以通过重定向将公钥文本内容追加到目标用户的公钥数据库

4.在客户端使用密钥对验证
当私钥文件(客户端)、公钥文件(服务器)均部署到位以后,就可以在客户端中进行测试了。首先确认客户端中当前的用户为 zhangsan,然后通过 ssh 命令以服务器端用户 lisi的身份进行远程登录。如果密钥对验证方式配置成功,则在客户端将会要求输入私钥短语,以便调用私钥文件进行匹配(若未设置私钥短语,则直接登入目标服务器)

5、把公钥给写的权限,改公钥内容,看能否登录上


我们去服务器把密码登录关了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: