SSH(Secure Shell)实现了与telnet服务类似的远程登录功能。可以实现字符界面的远程登录管理,而SSH是采用密文在网络中传输数据,安全级别更高,也替代了telnet服务。

相比较telnet,SSH协议具有如下特点:

Ø  数据的加密和安全性。其中包括了用户登录时输入的用户口令。而telnet的用户登录口令是明文加密的。

Ø  SSH提供了口令和密文两种用户验证方式,既可以输入用户名和口令进行用户登录,也可以使用密钥进行用户登录,可以灵活的应用到不同的场合。

Ø  SSH协议除了具有远程登录的功能外,还提供了远程文件复制功能,使用scp和sftp客户端软件可在本地主机和远程主机之间进行安全的文件传输,是rcp和ftp服务安全替代。

SSH服务可以采用以下两种验证方式进行用户登录的认证。

Ø  基于口令的安全验证。用户只有知道登录用户的账号名称和口令,才可以登录到远程主机,并且,所有传输的数据都会被

加密。但是,这种验证方式不能保证用户正在连接的服务器就是他想连接的服务器。

Ø  基于密钥的安全验证。需要依靠密钥,也就是说用户必须为自己创建一对密钥,并把公有密钥放在需要访问的服务器上。

当需要连接到SSH服务器上时,客户端软件就会向服务器发出请求,请求使用客户端的密钥进行安全验证。服务器收到请求后,先在该用户的根目录下寻找公有密钥,然后把它和发送过来的公有密钥进行比较,如果,两个密钥一致,服务器就用公有密钥加密“质询”,并把它发送给客户端软件。客户端软件收到质询后,就可以用本地的私人密钥解密再把它发送给服务器。

O penssh软件包是实现ssh功能的公共软件包,是openssh服务器和客户机程序运行所必须的。

O penssh-server软件包实现了ssh服务器的功能。

O penssh-clients软件包包含了ssh服务的客户端程序。

O penssh-askpass和openssh-askpass-gnome只有在linux图形界面下使用SSH服务时才需要,因此只在字符界面工作时可不安装。

查看ssh是否安装

与openssh服务相关的配置文件都保存在目录“/etc/ssh”中,其中sshd_config是主配置文件,开启ssh的服务加密认证功能修要修改配置文件中的内容。

RSAAuthentication yes表示启用RSA的认证功能。

PubkeyAuthentication yes表示启用公钥加密功能。

AuthorizedKeysFile表示公钥认证的文件保存的路径及名称。

完成后,重启服务器

为root用户生成公钥和私钥对并使用1024位(或2048位)的加密算法

ssh-kengen命令用于生成当前用户的密钥对,

“-t rsa”命令选项指定密钥的类型为rsa。在ssh-keygen命令生成密钥的执行过程中,需要用户回答相关的设置信息

第一个是私钥保存的默认路径,第二个是为私钥设置密码,第三个是确认私钥的密码。直接点击下一步即可。

ssh-keygen命令执行完毕后会在用户宿主目录的“.ssh”目录中生成两个文件,其中“id_rsa”是用户的私钥文件,“id_rsa.pub”是用户的公钥文件,这两个文件是通过ssh-keygen命令一次生成的,并且要配对使用。

由于生成的公钥文件名和配置文件中的不相符,因此要将生成的公钥名称改为与配置文件中的相同。

在windows下使用ssh客户端软件

W inSCP

W inSCP是windows下的scp和sftp客户端程序,winSCP不仅可以免费使用,而且还是知名的开源软件项目。

使用此软件可以安全的将服务器的私钥下载到本地。在winSCP程序启动后会出现与Putty类似的配置对话框,在该对话框中输入ssh服务器的主机明明和端口号,用户名和密码登陆即可。

登陆成功后,出现的界面非常类似ftp客户程序的布局,左边栏是本地目录,右边栏是ssh服务器中的目录。

将服务器的ssh目录打开,将私钥下载到本地。

下载到本地后,要将服务器的私钥删除,以保证私钥的唯一性。

P uttygen

使用puttygen的目的在于能够将linux产生的私钥过滤为windows识别的私钥。

将保存的私钥导入到putty密钥生成器中。

然后设置密钥保存的密码,生成密钥位数为1024位,单击保存私钥即可。

选择保存私钥的路径。

P utty

P utty是windows下最流行的ssh客户端软件,并且能免费使用。而且软件很小只有300kb左右。

打开putty输入要连接的服务器的主机名,端口号及协议的类型。

在认证中将生成的私钥导入。

打开会话,输入私钥的密码即可。

禁止root用户ssh的登陆。

由于ssh采用密文传输方式,因此默认允许root用户直接进行ssh登陆,出于安全的需要也可以设置禁止root用户直接进行ssh登陆。

在sshd_config配置文件中将PermitrootLogin yes修改为前面的注释去掉并改为no即可。

重启一下服务,使配置生效。

此时再使用root登陆被拒绝。

但是我们需要执行root用户的权限,该怎么办呢,通过为普通的系统用户加密登陆,登陆成功后,使用su命令转换为root用户就可以了。

另外,在windows客户端使用sftp命令也可以实现安全的上传和下载文件。 S ftp是ftp的安全替代品。 S ftp命令连接到ssh服务器后所传输的任何内容都是密文的,大大加强了文件传输的安全性。 S ftp文件传输是在ssh服务器的子系统存在的。因此,在使用sftp命令连接ssh服务器之前需要确认sshd_config文件中包括sftp子系统的配置。

使用sftp命令登陆的格式如下。

在sftp命令的交互环境中可以支持ftp环境中的常用命令,操作比较简单。