从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种方式的攻击。
第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上, 客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来 的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密"质询"(challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可 以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且"中间人"这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。
安装并测试OpenSSH
因为受到美国法律的限制,在很多Linux的发行版中都没有包括OpenSSH。但是,可以从网络上下载并安装OpenSSH(有关OpenSSH的安装 和配置请参考:http://www.linuxaid.com.cn/engineer/brimmer/html/OpenSSH.htm)。
安装完OpenSSH之后,用下面命令测试一下:
ssh -l [your accountname on the remote host] [address of the remote host]
如果OpenSSH工作正常,你会看到下面的提示信息:
The authenticity of host [hostname] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入"yes"。这将把这台主机的"识别标记"加到"~/.ssh/know_hosts"文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。
然后,SSH提示你输入远程主机上你的帐号的口令。输入完口令之后,就建立了SSH连接,这之后就可以象使用telnet那样使用SSH了。
SSH的密匙
生成你自己的密匙对
生成并分发你自己的密匙有两个好处:
1) 可以防止"中间人"这种攻击方式
2) 可以只用一个口令就登录到所有你想登录的服务器上
用下面的命令可以生成密匙:
ssh-keygen
如果远程主机使用的是SSH 2.x就要用这个命令:
ssh-keygen -d
在同一台主机上同时有SSH1和SSH2的密匙是没有问题的,因为密匙是存成不同的文件的。
ssh-keygen命令运行之后会显示下面的信息:
Generating RSA keys: ............................ooooooO......ooooooO
Key generation complete.
Enter file in which to save the key (/home/[user]/.ssh/identity):
[按下ENTER就行了]
Created directory '/home/[user]/.ssh'.
Enter passphrase (empty for no passphrase):
[输入的口令不会显示在屏幕上]
Enter same passphrase again:
[重新输入一遍口令,如果忘记了口令就只能重新生成一次密匙了]
Your identification has been saved in /home/[user]/.ssh/identity.
[这是你的私人密匙]
Your public key has been saved in /home/[user]/.ssh/identity.pub.
The key fingerprint is: 2a:dc:71:2f:27:84:a2:e4:a1:1e:a9:63:e2:fa:a5:89 [user]@[local machine]
"ssh-keygen -d"做的是几乎同样的事,但是把一对密匙存为(默认情况下)"/home/[user]/.ssh/id_dsa"(私人密匙)和"/home/[user]/.ssh/id_dsa.pub"(公用密匙)。
现在你有一对密匙了:公用密匙要分发到所有你想用ssh登录的远程主机上去;私人密匙要好好地保管防止别人知道你的私人密匙。用"ls -l ~/.ssh/identity"或"ls -l ~/.ssh/id_dsa"所显示的文件的访问权限必须是"-rw-------"。
如果你怀疑自己的密匙已经被别人知道了,不要迟疑马上生成一对新的密匙。当然,你还要重新分发一次公用密匙。
分发公用密匙
在每一个你需要用SSH连接的远程服务器上,你要在自己的家目录下创建一个".ssh"的子目录,把你的公用密匙"identity.pub" 拷贝到这个目录下并把它重命名为"authorized_keys"。然后执行:
chmod 644 .ssh/authorized_keys
这一步是必不可少的。如果除了你之外别人对"authorized_keys"文件也有写的权限,SSH就不会工作。
如果你想从不同的计算机登录到远程主机,"authorized_keys"文件也可以有多个公用密匙。在这种情况下,必须在新的计算机上重新生成一对密 匙,然后把生成的"identify.pub"文件拷贝并粘贴到远程主机的"authorized_keys"文件里。当然在新的计算机上你必须有一个帐 号,而且密匙是用口令保护的。有一点很重要,就是当你取消了这个帐号之后,别忘了把这一对密匙删掉。
分享到:
相关推荐
在IT行业中,网络服务的远程访问管理是至关重要的,telnet和SSH(Secure Shell)是两种常见的远程登录协议,用于实现客户端与服务器之间的安全通信。本文将深入探讨这两种协议的工作原理、特点以及如何进行登陆验证...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他服务。在本文中,我们将深入探讨如何使用SSH实现登录验证,特别是在一个基于Struts2框架的Web应用程序中。 首先,理解SSH的...
SSH 工作原理及流程 SSH(Secure Shell)是一种安全的网络协议,用于提供安全的...SSH 工作原理及流程是基于客户端/服务器架构的安全协议,用于提供安全的远程访问和文件传输。SSH 协议具有广泛的应用场景和多种优点。
在本套“SSH登录验证系统”中,我们将深入探讨SSH的原理、配置以及如何构建一个安全的登录管理系统。 首先,SSH的核心功能是提供加密的网络通信,包括命令行接口的远程控制和文件传输。它通过公钥基础设施(PKI)...
在SSH配置中,邮箱验证可以作为一种增强安全性的手段,例如,当用户尝试通过SSH连接到服务器时,系统会向预先登记的邮箱发送一个一次性密码或验证码。用户需要在连接过程中输入这个验证码才能成功登陆,这样可以防止...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他服务。SSH2是SSH协议的第二版本,它提供了更强的安全性和更多的功能。在这个例子中,我们将探讨如何使用Java实现SSH2的用户名...
SSH安全协议,全称为Secure Shell(安全外壳协议),是一种用于加密数据交换的网络协议,它允许用户在不安全的网络上安全地进行远程登录和其他网络服务。SSH协议通过在客户端和服务器之间建立加密通道来保护数据传输...
10. **测试运行**:启动Tomcat服务器,通过浏览器访问应用,测试添加数据和验证功能是否正常工作。 SSH整合能够提高开发效率,降低系统复杂性,但同时也增加了学习和维护的成本。理解并熟练掌握SSH框架的整合,对于...
在SSH框架下,可以使用服务器端生成图像验证码,并通过SSH安全通道发送给客户端。图像验证码的生成通常涉及到随机数生成、字体库选择、颜色混淆等技术,以增加机器识别的难度。 MD5(Message-Digest Algorithm 5)...
这样的资源对于初学者来说非常有价值,可以通过实践了解SSH安全框架的基本用法和安全实践。 总的来说,SSH在IT行业中扮演着重要的角色,无论是在远程终端连接的安全性,还是在企业级应用的复杂安全需求上。学习和...
在这个完整的安全验证案例中,我们将深入探讨SSH整合的关键知识点。 一、SSH简介 SSH主要用于加密网络通信,防止数据在传输过程中被窃取或篡改。它通过公钥/私钥对进行身份验证,确保只有授权的用户可以访问服务器...
6. **云服务提供商**:许多云平台(如AWS、Google Cloud、Azure)也支持SSH接入,允许用户通过SSH安全地管理实例。 **安全最佳实践** 1. **密钥管理**:定期更换密钥,避免使用默认的SSH端口,限制密钥的使用时间,...
linux下ssh安全连接,使用密钥来验证,可以不需要密码来登录
SSH(Secure Shell)是一种网络协议,用于在...掌握SSH的使用方法,无论是基础的命令行登录,还是高级的密钥认证和端口转发,都将极大地提升工作效率和安全性。对于Mac用户来说,熟悉这些技能是日常工作中必要的能力。
Python企业SSH登陆双因素认证系统是一种安全措施,用于增强远程访问服务器的身份验证过程。传统的SSH(Secure Shell)登录通常只需要用户名和密码,但这种方式容易受到密码破解或中间人攻击的威胁。双因素认证(2FA...
Python-SeKey的工作原理是生成一对SSH密钥,其中私钥安全地存储在Secure Enclave中,而公钥则上传到远程SSH服务器。当用户尝试通过SSH连接到服务器时,Python-SeKey会触发TouchID验证。一旦用户成功验证,私钥会被...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。...通过深入理解SSH的工作机制以及如何配置和管理它,我们可以提高系统的安全性,并有效地进行远程管理。
本文档将指导您在 Ubuntu 14.04 服务器上使用 SSH 密钥验证登录,以提高服务器的安全性。下面是具体的步骤和说明: 一、客户端生成私钥和公钥 在客户端中,使用以下命令生成私钥和公钥: `ssh-keygen -t dsa` 这...
SSH整合AJAX验证用户名存在的完整实例是一个典型的Web开发应用场景,主要涉及了Struts2(S)、Spring(S)和Hibernate(H)三大框架的集成,以及异步JavaScript和XML(AJAX)技术的运用,用于提升用户体验。...
七、SSH安全最佳实践 - 使用非默认的SSH端口,降低被扫描攻击的风险。 - 禁止密码登录,强制使用密钥对认证。 - 定期更换密钥,增加安全性。 - 使用防火墙限制SSH访问来源。 - 配置SSH的“AllowUsers”或“DenyUsers...