为什么要用ssh?
ssh是secure shell的缩写,英文意思非常明白,他就是一款安全的shell工具,专门作为远程登录使用的。安全是一方面的优势。
但是何为安全?ssh传输数据是经过加密的,攻击者截取数据后是看不懂的。而且也能方式DNS和IP欺骗(这一点,我需要再查阅资料,了解的小伙伴可以留言,让大家都学习一下)
另一方面的优势就是数据传输是经过压缩的,大大减轻了网络压力,速度明显提升
SSH的安全级别
口令密码、公钥验证、IP过滤三个级别
windows客户端配置
首先下载所需要的ssh相关指令,这个工具包可以到这个链接下载链接:
点击打开链接 密码: ameq。这个工具包很多指令不是必须的,大家可以按需摘取。
解压工具包后将其添加到环境变量中。然后在cmd中执行ssh-keygen -t rsa,一直回车,会提示id_rsa等文件生成在/c:user/administor/.ssh目录中。此时windows客户端配置已经完成。
linux服务端配置
我只讲解公钥验证方式,口令方式比较简单,大家可以自行搜索方法。
用vi打开/etc/ssh/sshd_conf配置文件,在文本末尾依次加上:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
其他都为默认配置
然后用sftp等方式将windows端生成的id_rsa.pub文件上传到Linux服务器端,将其改名为authorized_keys放在相应的用户~/.ssh/下面。为什么要修改为这个文件名,因为这 是与上面配置文件中AuthorizedKeysFile相对应的。
重新开启服务
service sshd restart
windows端测试
ssh -p 22 test@10.4.121.144(# -p 22这个选项可以不用,因为默认的端口号就是22,如果大家修改了端口,请用此选项)
此时发现不用输入密码,直接就已经登录到了远程。
接下来就是跳坑环节了:
问题一:我想让用户既可以用公钥方式,也可以用密码方式。因为有些人的电脑端没有使用ssh-keygen。
其实这种方式是不赞同的,但是有些场景确实也会需要。比如我想让我自己的windows电脑能够用公钥方式登录虚拟机linux服务器,但是公司其他人必须使用密码登录。
这种情况下的配置非常简单。上述linux服务端端配置,对文件进行了修改,将其中的一项PasswordAuthention改为yes就行了。此时就会同时支持RSA与Passwd方式。
问题二:我只想让公司某个部门登录,其他部门人员deny。
这个就要涉及到权限问题。可以用useradd hr创建一个hr用户以及用户组,此时在/etc/ssh/sshd_conf配置文件中添加AllowUsers hr就可以了,此时只会允许hr部门的人员登录。为什么用hr举例子呢,是不是hr部门的漂亮妹子多些,哈哈。
其实这个例子是不恰当的,因为只要知道hr的用户名密码不一样能登录吗。在公司内部,一般每个部门都只会有一个账号密码,这个需要公司内部去协调,系统维护人员无需管理这些哈。
还有其他方式可以实现这个场景,大家可以参考pam和防火墙方式去进行配置
点击打开链接
linux服务端配置
我只讲解公钥验证方式,口令方式比较简单,大家可以自行搜索方法。
用vi打开/etc/ssh/sshd_conf配置文件,在文本末尾依次加上:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
其他都为默认配置