SSH(Secure SHell),实现了与Telnet服务类似的远程登录功能,由于telnet在网络上不是很安全,SSH协议在网络中使用密文传输数据,所以现在已成为Telnet的替代产品
SSH协议在网络中传输的任何数据都进行加密处理,当让包括用户登录时输入的用户口令,Telnet协议是以明文的方式在网络中传输,这样很容易被黑客捕获到。相比之下,SSH比telnet要安全许多了。
SSH协议提供两种用户认证方式:
1、基于口令的安全认证
与telnet类似,提供正确的用户口令后可以登录远程服务器
2、基于密钥的安全认证
使用公钥和私钥对的方式对用户进行认证
SSH协议除了具有远程登录的功能,此外还提供的文件复制的功能,一般使用scp和sftp客户端软件就可以在远程主机和本地主机之间进行安全的文件传输。
这里主要是以OpenSSH来进行配置,OpenSSH是著名的开源软件项目 ,绝大多数Linux发行版本都采用OpenSSH作为SSH服务器。如图1
OpenSSH服务器和客户端软件是默认安装的
openssh软件包是实现ssh功能的公共软件包
openssh-server软件包实现了SSH服务器的功能
openssh-clients软件包中包含了SSH服务的客户端程序
可能还有还有其它的显示:
openssh-askpass和openssh-askpass-gnome只有在Linux的图形界面下使用SSH服务时才需要
OpenSSH的服务程序名称是sshd,最为Linux中重要的服务之一,OpenSSH的服务程序被安装之后,sshd在3和5两个级别是自动启动的,如图2
sshd服务程序的启动脚本
/etc/init.d/sshd
sshd服务程序缺省状态为自动启动
sshd服务的启动与停止
1、启动服务程序
service sshd start
2、停止服务程序
service sshd stop
注意在停止服务的时候,最好在主机前进行操作,如果远程停止SSH,那么会中断链接,启动就是件麻烦事了
OpenSSH服务器和客户机的所有配置文件都保存在同一目录中/etc/ssh/,如图3
服务器配置文件
1、SSH服务器的配置文件是sshd_config
/etc/ssh/sshd_config
sshd服务启动的时候会按照这个文件的内容进行配置
2、客户机配置文件
SSH客户程序的配置文件是ssh_config
/etc/ssh/ssh_config
当服务器作为客户机使用ssh指令远程登录的时候,ssh指令会按照这个配置文件进行配置。
使用ssh命令登录SSH服务器,一般的格式如下
# ssh
首次登录SSH服务器时为了建立加密的SSH连接需要用户在客户端确认服务器发来的RSA密钥,一般输入yes即可
用户认证
每次登录SSH服务器都需要输入正确的用户口令
SSH登录使用的是SSH服务器主机中的用户帐号
关于SSH的用户目录
在SSH客户主机的用户宿主目录中,使用名为“.ssh”的目录保存用户的SSH客户端信息
~/.ssh/
“.ssh”目录在用户首次进行SSH登录后自动建立
“known_hosts”文件位于“.ssh”目录中
“known_hosts”文件用于保存当前用户所有登录过的SSH服务器的RSA密钥
--------------------------------------
设置密钥认证的一般步骤
1、在SSH客户端生成用户的公钥和私钥对文件
2、将SSH客户的公钥添加到SSH服务器中用户的认证文件中
3、验证密钥的认证
下面就一个具体的实例来看看如何进行密钥认证
1、在SSH客户端生成用户的公钥和私钥对文件
增加用户,并切换用户,如图4
使用ssh-keygen命令生成密钥对
$ ssh-keygen -t rsa
如图5
公钥和私钥文件
ssh-keygen命令将在“.ssh”目录中生成公钥和私钥文件
id_rsa是私钥文件,内容需要严格保密
id_rsa.pub是公钥文件,可发布到SSH服务器中
如图6
2、将SSH客户的公钥添加到SSH服务器中用户的认证文件中
复制公钥文件
将客户端中的用户公钥文件复制到SSH服务器中
公钥文件的复制可使用软盘、U盘或网络
将公钥内容追加到authorized_keys 文件
authorized_keys 文件保存在SSH服务器中用户目录的“.ssh”子目录中
authorized_keys用于保存所有允许以当前用户身份登录的SSH客户端用户的公钥内容
使用Windows来维护Linux服务器的人员可以使用WinSCP软件来传输公钥文件,如图7
如果服务器的目录中没有authorized_keys 文件,只需要将id_rsa.pub公钥文件的名称更改为authorized_keys,如果已经有了authorized_keys文件,使用 “>>”重定向符将用户公钥追加到authorized_keys文件中
cat id_rsa.pub >> ~/.ssh/authorized_keys
这里只需要将id_rsa.pub公钥文件的名称更改为authorized_keys就可以了。如图008
3、验证密钥的认证
完成之后,ssh客户端用户xwg使用ssh登录到ssh服务器的root用户账号,其登录过程是不需要提示用户密码,而是直接使用密钥来进行认证,如果认证成功,就会以root的身份登录到ssh服务器中。
如图9
这样,就不需要使用密码来进行认证,这样安全性更高
------------------------------------------------------------
其它设置
禁止root用户的SSH登录
为了提高Linux服务器的安全性,可以禁止root用户进行SSH登录
设置sshd_config文件
# vi /etc/ssh/sshd_config
//添加设置行
PermitRootLogin no
重新启动sshd服务程序
# service sshd restart
再次登录SSH服务器时将不能使用root帐号进行登录
ssh命令的两种格式
格式1:ssh
格式2:ssh -l username sshserver
两种命令格式具有相同的功能
ssh命令中需指定登录的用户名和SSH服务器地址
不指定用户名的ssh命令
ssh命令中如果不指定用户名,将使用SSH客户机中当前用户的名字登录SSH服务器
# ssh 192.168.1.2