![一文学会 SSH 服务](http://img.jiangsulong.com/220411/0S9304N6-0.jpg)
文章插图
作者 | 阿文
责编 | 郭芮
我是一名云计算工程师,在实际工作中经常遇到很多人把使用windows那套习惯带来linux上来,其中最严重的一点就是使用密码的方式来进行登录鉴权 。我不止一次的提醒他们不要在Linux上使用密码而应该使用密钥的方式鉴权,因为密钥比密码从安全性上来说根本不是一个量级的 。
本文我就详细带大家来全方位的了解下SSH以及在Linux 系统中的使用和一些简单的使用技巧 。
1.什么是SSH?简单的说,SSH是一种网络协议,用于计算机之间的加密登录 。
在早期其实也有一些例如 telnet这样的工具,如果你是一名网络管理员,在操作交换机和路由器时候一定会和telnet 打过交道,但是telnet 协议是明文传输的,因此它并不安全 。正是由于这个原因后来有了SSH,SSH全称:Secure Shell,安全的命令解释器,为客户机提供安全的Shell环境,用于远程管理,默认端口:TCP 22,它被广泛的应用在unix 和Linux 操作系统中 。
在Linux中的SSH 主要是 OpenSSH 。
- 主要软件包:openssh-server、openssh-clients
- 服务名:sshd
- 服务端主程序:/usr/sbin/sshd
- 客户端主程序:/usr/bin/ssh
- 服务端配置文件:/etc/ssh/sshd_config
- 客户端配置文件:/etc/ssh/ssh_config
ssh user@ip
例如要通过root 用户登录52.33.1.2这台机器则执行:
ssh root@52.33.1.2
即可,它会默认使用22端口来进行登录 。
SSH服务器端配置文件sshd_config,默认在/etc/ssh/目录下面的sshd_config 文件 。
2.SSH登录的用户验证方式
- 密码验证:使用服务器中系统帐号对应的密码;
- 密钥对验证:使用客户机中生成的公钥、私钥 。
密码验证需要在系统中设置一个密码,设置密码如下:
[root@centos ~]# passwd root
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
只要你的SSH 没有禁止密码登录,并且用户属性没有设置成nologin,都可以通过密码来进行连接即可 。但是密码登录非常的不安全,互联网上几乎无时无刻不遭受恶意入侵,入侵者通过暴力破解的方式来对目标系统进行密码破解 。最简单的破解只需要三中个工具即可完成 。
- masscan 扫描目标主机哪些端口是开放的;
- hydra 可以指定ip和词典来对目标主机进行密码暴力破解;
- 词典 。
root@ubuntu:~# hydra -s 22 -v -l root -P pass.txt 58.12.95.153 ssh
只要入侵者的密码库足够丰富,破解的机器性能足够强大,破解不是问题 。而一般人所使用的密码并不会特别复杂,因此密码的方是破解非常简单 。
密钥认证
SSH 支持通过密钥的方是来进行验证,包括rsa算法或dsa 算法等 。例如rsa 算法,RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用 。
1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密 。这种算法用他们三个人的名字命名,叫做RSA算法 。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法" 。毫不夸张地说,只要有计算机网络的地方,就有RSA算法 。
这种算法非常可靠,密钥越长,它就越难破解 。根据已经披露的文献,目前被破解的最长RSA密钥是768个二进制位 。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布) 。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全 。
要使用密钥认证,首先需要创建一对密钥对,执行
ssh-keygen -t rsa
按几次回车键即可生成密钥文件 。[root@centos ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
推荐阅读
- 一文详解Docker 代理脱坑
- 一文看懂全排列算法
- 中国茶叶学会为恩施市培训初中级评茶员
- 学会这4点,你也能拥有人人羡慕的逻辑思维能力
- 如何快速找到自己的风格并学会穿搭?
- 全部取材自真实受骗经历!一文揭秘普洱的7大造假手法
- 超车的误区,很多人都做错了,学会这两个技巧超车更安全
- 一文带你了解 HTTP 黑科技
- 如何在Mac下生成ssh密钥?
- Linux更改SSH远程登录端口教程