一文学会 SSH 服务


一文学会 SSH 服务

文章插图
作者 | 阿文
责编 | 郭芮
我是一名云计算工程师,在实际工作中经常遇到很多人把使用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 来登录计算机非常的简单,只需要执行如下命令即可:
 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和词典来对目标主机进行密码暴力破解;
  • 词典 。
以下面的命令解释,入侵者要破解58.12.95.153这台机器的ssh密码 。只需要知道它的端口和用户名就可以,程序会代替人自动去进行密码校验直到试出正确密码 。
 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:


推荐阅读