OPENSSH
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OPENSSH相关的知识,希望对你有一定的参考价值。
1.openssh简介:
用于远程连接服务器主机,通信过程和认证过程都是加密的,比telnet更安全。
2.openssh版本:
v1版本:无法防范中间人
v2版本:基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证
3.openssh有两种认证方式:
基于口令认证(密码)
基于密钥认证
---ssh-keygen //密码生成器
---ssh-copy-id //将公钥传输至远程服务器
---scp //跨主机安全复制工具,和ssh-copy-id 作用一样,但是权限部分有差别
4.openssh架构:C/S架构
5.配置文件位置:
服务端:/etc/ssh/sshd_config
客户端:/etc/ssh/ssh_config
6.基于口令认证,语法格式:
ssh 远程主机ip
输入远程主机root的登录密码
或
ssh 远程主机用户名@远程主机ip
输入远程主机用户的登录密码
或
ssh 远程主机用户名@远程主机ip ‘执行的命令‘
输入远程主机用户的登录密码
原理:当ssh客户端连接某一服务器时,服务器会向其发送公钥副本,客户端会把它保存到~/.ssh/known_hosts文件中。在以后的连接时,客户端会拿这个文件中的公钥和服务器发来的公钥副本进行比对,匹配上就口令认证通过进行连接;匹配不上客户端就会假定网络通信遭到劫持或服务器被,就会,中断连接。
注意:如果服务器的公钥发生改变(硬盘故障导致公钥丢失或要替换公钥),用户则需要更新其~/.ssh/known_hosts文件并删除旧的条目才能够进行登录或者直接删掉这个文件。
通过cat ~/.ssh/known_hosts可以看到公钥内容由服务器ip、加密算法类型、随机数组成。
主机密钥(公钥)存储在服务器上的/etc/ssh/ssh_host_key文件中(有一个pub文件里的内容是和客户端公钥对应的)。key结尾的是私钥,pub结尾的是公钥。
7.配置基于ssh密钥的身份验证:
ssh允许用户使用私钥-公钥方案进行身份验证。私钥文件用作身份验证凭据,必须妥善保管;公钥复制到用户希望登录的系统,用于验证私钥,公钥不需要保密。拥有公钥的ssh服务器可以发布仅持有私钥的系统才可解答的问题。因此,可以根据所持有的密钥进行身份验证,就不必每次访问系统时输入密码。
使用ssh-keygen [-t 算法名]命令生成密码,将会生成私钥~/.ssh/id_rsa和公钥~/.ssh/id_rsa.pub。
注意:**
生成密钥时,系统将提供指定密码的选项,在访问私钥时必须提供该密码。如果私钥被偷,除颁发者之外的其他任何人很难使用该私钥,因为已使用密码对其进行保护。这样,在***者破解并使用私钥前,会有足够的时间生成新的密钥对并删除所有涉及旧密钥的内容。
私钥和公钥的权限就分别为600和644。.ssh目录权限必须是700。
在可以使用基于密钥的身份验证前,需要将公钥复制到目标系统上,可以使用ssh-copy-id完成这一操作。默认复制的是~/.ssh/id_rsa.pub文件。
演示:
图中①是说请输入密钥保存位置,默认保存在/root/.ssh/id_rsa文件,直接enter回车就可以。
图中②是说请输入私钥密码,直接回车就是不设置。这里的私钥密码是为了防止私钥被偷所需设置的。当然,不设置直接回车也可以
图中③是让你再重复输一次私钥密码,如果②是直接回车的,这里也直接回车,③和②保持一致。
图中①提示确认继续连接吗,输入yes;
图中②提示输入远程服务器用户的登录密码,我这里用的是root用户
图中③在登录远程服务器的时候,提示输入私钥密码,注意是我们前面设置过的私钥密码,也就是说私钥和私钥密码保存在本机,公钥保存在远程主机。
注意:
拷贝之前的公钥权限是644,拷贝过去在远程主机上文件权限是600(拷贝过去的文件是远程主机用户家目录下的.ssh/authorized_key文件);如果是使用scp 公钥文件 远程主机用户名@远程主机ip:/目录,这个文件权限是不符合规定的,需要手工改成600。
8.自定义ssh服务配置:
openssh服务器通常无需修改,系统还是提供了很多配置以保证安全。可以在openssh服务器的/etc/ssh/sshd_config中进行修改,修改完重启sshd服务。
例如:
PermitRootLogin {yes|no} //是否允许root用户远程登录系统
PermitRootLogin without-password //仅允许root用户基于密钥方式远程登录
PasswordAuthentication {yes|no} //是否启用密码身份验证,默认开启
注意:ListenAddress 172.16.10.4 //监听地址要写服务器自己的地址
9.ssh的其他注意事项:
- 密码应该经常换且足够复杂
- 使用非默认端口 //登录时用ssh -p 端口号 用户名@服务器ip
- 限制登录客户端地址
- 仅监听特定的ip地址
- 禁止管理员直接登录
- 仅允许有限制用户登录
- 使用基于密钥的认证
- 禁止使用空密码
- 禁止使用sshv1版本
- 设定空闲回话超时时长
- 利用防火墙设置ssh访问策略
- 限制ssh的访问频度和并发在线数
- 做好日志的备份,经常分析
- 密码认证
注意:上述的注意事项,很多都是在服务器配置文件里配置,感兴趣的可以在自己电脑虚拟机上尝试。
10.基于口令和基于密钥认证的区别:
基于口令的每次登陆都需要输入远程服务器用户的登录密码
基于密钥的不需要输入输入远程服务器用户的登录密码,最多输入一个私钥密码(不设置就不用输入)。
以上是关于OPENSSH的主要内容,如果未能解决你的问题,请参考以下文章