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文件。
演示:
OPENSSH算法

图中①是说请输入密钥保存位置,默认保存在/root/.ssh/id_rsa文件,直接enter回车就能够。
        图中②是说请输入私钥密码,直接回车就是不设置。这里的私钥密码是为了防止私钥被偷所需设置的。固然,不设置直接回车也能够
        图中③是让你再重复输一次私钥密码,若是②是直接回车的,这里也直接回车,③和②保持一致。

OPENSSH
图中①提示确认继续链接吗,输入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.基于口令和基于密钥认证的区别:基于口令的每次登录都须要输入远程服务器用户的登陆密码基于密钥的不须要输入输入远程服务器用户的登陆密码,最多输入一个私钥密码(不设置就不用输入)。
相关文章
相关标签/搜索