SSH(Secure Shell)实现了与telnet类似的远程登录功能,不同的是使用密文传输数据。在linux系统中,SSH还支持scp和sftp等客户端程序进行远程主机复制。其中,SSH提供两种用户认证方式
1、基于口令的安全认证
与telnet类似,口令正确即可登录
2、基于密钥的安全认证
使用公钥和私钥对的方式进行认证
基于口令的认证
基于口令的ssh非常简单,linux默认已开启ssh,所以只要ssh X.X.X.X就可以访问了
用RHEL-A访问RHEL-B
p_w_picpath 
在首次ssh时,会从对方得到一串指纹,这个就是对方传过来的公钥。输入yes代表接受这个公钥,这个公钥保存在root目录下的.ssh文件夹中,.ssh目录在用户首次登陆后自动创建。注意.ssh这个文件夹是隐藏的,必须使用ls -a才能查看
RHEL5.7下的SSH服务器配置_第1张图片
在.ssh文件夹下有一个名为known_hosts的文件,里面保存的是当前用户登陆过的SSH服务器的RSA公钥。
p_w_picpath
使用ssh访问对方,默认使用当前用户
p_w_picpath
基于密钥的认证
设置密钥认证的一般步骤:
1、在SSH客户端生成用户的公钥和私钥对文件
2、将SSH客户的公钥添加到SSH服务器中用户的认证文件中
3、验证密钥认证
首先在SSH客户端生成用户的公钥和私钥对
ssh-keygen –t rsa
RHEL5.7下的SSH服务器配置_第2张图片 
其中passphrase是一串密码,作用是当你的私钥丢失后,你可以通过这串密码找回你的私钥。注意密码长度不能太短,否则无法生成私钥。
ssh-keygen命令将在.ssh目录中生成公钥和私钥文件
p_w_picpath 
id_rsa是私钥文件,内容需要严格保密
id_rsa pub是公钥文件,可发布到SSH服务器中
生成了公钥和私钥后,需要把公钥上传到SSH服务器的.ssh目录中,其中SSH服务器中的公钥名称必须为authorized_keys(为确保对方也有.ssh目录,可以在对方主机上进行一次ssh登录或者直接创建.ssh文件夹)。
那么,我们怎么将公钥安全的上传到SSH服务器呢?办法很简单,通过SSH自带的SCP安全复制即可成功上传。如图所示:
p_w_picpath
当SSH客户端有了自己的私钥,SSH服务器有了公钥,这时候再进行SSH就不用再输入用户口令了,但是要输入之前设置的passphrase密码
p_w_picpath
这时使用SSH自带的SFTP进行访问,也可以跳过口令直接登录。注意SFTP与vsftpd不同,它没有使用到21和20端口,所以无需开启vsftpd服务。
p_w_picpath 
SSH其他功能
SSH有一个配置文件sshd_config,存放于/etc/ssh目录下。我们知道SSH默认允许root用户登录,不过在这个配置文件中可以禁用root用户进行登录。
vi /etc/ssh/sshd_config
添加PermitRootLogin no
重启sshd服务
service sshd restart
SSH登录格式
1、ssh [email protected]
2、ssh –l username X.X.X.X
使用SSH运行图形程序
ssh –X [email protected]

SCP功能
SCP可以实现SSH服务器与客户机直接的文件复制,类似于CP命令。
将SSH服务器中的文件复制到客户机
scp [email protected]:/etc/passwd
将客户端的文件复制到SSH服务器(~代表根目录)
scp XXX [email protected]:~

windows中可用于登录linux的经典SSH工具:putty
RHEL5.7下的SSH服务器配置_第3张图片
提示是否从对方接收公钥,点“是”
RHEL5.7下的SSH服务器配置_第4张图片
登录成功
RHEL5.7下的SSH服务器配置_第5张图片
windows下SFTP和SCP工具:winscp
RHEL5.7下的SSH服务器配置_第6张图片
提示接收对方的公钥,点yes
RHEL5.7下的SSH服务器配置_第7张图片
登录成功,可以直接在linux和windows直接拷贝文件了
RHEL5.7下的SSH服务器配置_第8张图片