Linux
下基于密钥的安全验证实现方法
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
-------OpenSSH+WinSCP+putty
密钥生成器
+putty
实验背景:
公司目前已使用
Linux
搭建了各个服务器(
FTP
、
DNS
、
Apache
、
Sendmail
、
Samba
),由于这些服务器都被放置在一个安全的地方,一般是不允许任何人进入的,公司现在需要通过远程客户端安全的访问这些服务器。
SSH
是标准的网络协议,可用于大多数
UNIX
操作系统,能够实现字符界面的远程登录管理,它默认使用
22
号端口,采用密文的形式在网络中传输数据,相对于通过明文传输的
Telnet
,具有更高的安全性。
SSH
提供了口令和密钥两种用户验证方式,这两者都是通过密文传输数据的,不同的是,口令用户验证方式传输的是用户的账户名和密码,这要求输入的密码具有足够的复杂度才能具有更高的安全性。而基于密钥的安全验证必须为用户自己创建一对密钥,并把共有的密钥放在需要访问的服务器上。当需要连接到
SSH
服务器上时,客户端软件就会向服务器发出请求,请求使用客户端的密钥进行安全验证。服务器收到请求之后,先在该用户的根目录下寻找共有密钥,然后把它和发送过来的公有密钥进行比较。如果两个密钥一致,服务器就用公有的密钥加密
“
质询
”
,并把它发送给客户端软件(
puetty
)。客户端收到质询之后,就可以用本地的私人密钥解密再把它发送给服务器。这种方式是相当安全的。
实验网络拓扑:
实验步骤:
一、
安装并配置
OpenSSH
软件
在
RHEL4
系统中
OpenSSH
服务器和客户端软件是默认安装的,因此不需要用户手动安装。如果没有安装,与
OpenSSH
服务相关的软件包都包括再第二张安装光盘中,可通过
rpm
命令进行安装。
在
RHEL4
中,与
OpenSSH
服务相关的配置文件都保存在目录
“/etc/ssh”
中,其中
sshd_config
是
SSH
服务器的配置文件,
ssh_config
是
SSH
客户机的配置文件。本实验通过在
Windows
使用
puetty
登录,因此不需要配置
ssh_config
。只需要配置
sshd_config
即可。
在
sshd_config
文件中将下面的三行注释掉即可。
RSAAuthentication yes
开启
RSA
加密功能
PubkeyAuthentication yes
开启公钥验证功能
AuthorizedKeysFile
指定公钥的文件名称以及保存位置
配置完成之后,需要重启
sshd
服务程序,以便新的配置生效。
在
SSH
服务器端(客户机端也可以,最好在客户机端生成,然后将公钥上传到对应的目录中,这样比较安全)生成公钥和私钥对。
ssk-keygen
命令用于生成当前用户的密钥对。
-t rsa
命令选项指定密钥的类型为
rsa
。
-b 1024
命令选项指定密钥的长度为
1024
位。
在
ssh-keygen
命令生成密钥的执行过程中,需要用户回答相关的设置信息,第一个为私钥的默认路径,第二个为私钥的密码,第三个为私钥的再次密码确认。
ssh-keygen
命令执行完毕后会在用户宿主目录的
“.ssh”
目录中生成两个文件,其中
id_rsa
是用户私钥文件,
id_rsa.pub
是用户的公钥文件,这两个文件是通过
ssh_keygen
命令一次生成,并且需要配对使用的。
由于生成的公钥名称与指定的公钥名称不符,因此需要将生成的文件名换成
authorized_keys
即可。
二、
安全使用
WinSCP
软件导出用户私钥
由于需要将私钥文件
id_rsa
拷贝到用户的主机上,而且还要删除服务器上的私钥,这样可以保证私钥的唯一性。如果通过
Samba
或者
FTP
服务器都可能造成私钥的丢失,因此需要采用安全的方式访问
Linux
服务器。
WinSCP
是
Windows
下的
scp
和
sftp
客户端程序,安装完
WinSCP
软件之后,开启
WinSCP
软件会出现与
PuTTY
类似的配置对话框,在该对话框中输入
SSH
服务器的主机名(
IP
地址)和端口号,用户名和密码(口令),并选择
“
登录
”
按钮进入登录,连接的方式是通过密文传输的,安全性极高。
通过
WinSCP
软件登录上
Linux
之后,可以将用户的私钥
id_rsa
先拷贝到自己的主机上,然后将
Linux
上的私钥删除即可以防后患。
三、
使用
PuTTY
密钥生成器生成
Windows
识别的密钥。
由于
Linux
下生成的密钥直接在
Windows
下是不能使用的,因此需要使用
puTTYgen
在
Windows
客户端生成对应的私钥。
将
Linux
服务器上下载下来的私钥导入到
PuTTY
服务器上,选择密钥位数为
1024
,类型为
SSH-2 RSA
和服务器上命令
ssh-keygen
设置的参数对应。
单击
“
生成
”
按钮,然后输入密钥使用的密码。
生成之后,单击
“
保存私钥
”
到本机上,会生成一个扩展名为
ppk
文件退出即可。
四、
安装并配置
PuTTY
软件
在
windows
中需要安装第三方软件来实现
SSH
客户端的功能。
PuTTY
是
Windows
下最流行的
SSH
客户端软件,并且还是绿色软件,专门为
SSH
设置使用的,能够免费使用。下面是打开之后的主界面。
在会话一栏输入主机名称对应的
IP
地址,端口号为
22
,协议类型为
SSH
。
在认证一栏中导入
PuTTY
密钥生成器生成的密钥。
然后保存会话并打开。输入用户名
root
,然后输入私钥的密钥即可。
由于
SSH
采用密文的传输方式,因此默认运行
root
用户直接进入
SSH
登录,出于安全的需要也可以设置禁止
root
用户直接进行
SSH
登录。
在
sshd_config
配置文件中将
“permitRootLogin yes”
前面的注释去掉,并将
“yes”
改为
“no”
即可。对
sshd_config
配置之后,重新启动
sshd
服务即可。
在
PuTTY
上设置一个使用
Linux
口令登录可以发现登录失败,这就是
“PermitRootLogin no”
造成的。
转载于:https://blog.51cto.com/butter520/188013