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