ssh讲解
一.加密、解密
1.数据加密与解密
加密(算法)
解密(算法)
明文 密文
2.加密算法
(1)对称加密算法:数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,需要使用加密及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。
算法:DES,AES
优点:算法公开、计算量小、加密速度快、加密效率高。
缺点:在数据传送前,发送方和接收方必须商定好密钥,如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
(2)非对称加密算法:假设A要连接主机B ,A先生成一对密钥。 A将公钥发送给B,私钥自己保留。B生成一个随机数并用A的公钥加密发送给A,A用私钥解密。A将解密后的随机数发送给B,B发现随机数是正确的则认证通过。
算法:RSA,DSA
优点:非对称加密使用一对密钥,一个用来加密,一个用来解密,而且公钥是公开的,私钥是自己保存的,不需要像对称加密那样在通信之前要先同步密钥。
缺点:加密和解密
(3)单向加密算法:提取数据特征码,特征码使用某一算法计算得出。A将明文和特征码发送给B,B用相同算法计算特证码,若得出的特征码相同,则明文一致,保证数据的安全性。
算法:MD4,MD5,SHA,HMAC
- ssh及应用
1.ssh的安装配置
(1)安装、服务
# yum install –y ssh
#rpm –qa | grep ssh
#/etc/init.d/sshd start
#netstat –tnl| grep 22
(2)文件解读
花费时间长、速度慢,只适合对少量数据进行加密。
Moduli 会话秘钥交换信息
Ssh_config 客户端配置文件
Ssh_config 服务端配置文件
文件命名中未包含rsa或dsa的为sshv1版本的连接文件
文件命名中包含rsa或dsa的为sshv2版本的连接文件,加密算法有rsa和dsa两种
(3)服务端配置文件解读
#vim /etc/ssh/sshd_config
#空格 纯注释
#port 22 可启用的参数,指定连接端口
#protocol 2 ssh的版本
#AddressFamily any 在ipv4还是ipv6上提供ssh服务
#Listen Address 只给这一个地址提供服务
PermitRootLogin yes 允许root登录
#KeyRegenerationInterval 秘钥重新生成的时间
#ServerKeyBits 秘钥长度
#SyslogFacility 日志设备
#MaxAuthTime 重试密码次数
#RsaAuthentication 基于rsa认证
#PubkeyAuthentication 公钥认证
#AuthorzedKeysFile 公钥所在用户家目录
#PasswordAuthtication 密码认证
1)Ssh服务端:10.1.16.173
限制tom用户登录ssh
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
DenyUsers tom
2)给指定的ip提供ssh服务,只给174提供ssh服务,在文件最后一行添加以下内容:
服务端:
# vim /etc/ssh/shd_config
AllowUsers
#/etc/init.d/sshd restart
客户端连接测试:10.1.16.174连接成功
10.1.14.36连接失败
2.ssh的认证机制
- ssh基于口令的认证
1)用户向远程主机发登录请求:ssh [email protected]远程主机
2)远程主机收到用户的登录请求,把自己的公钥发给用户。
2)用户使用这个公钥,将登录密码加密后,发送回远程主机。
3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
#ssh –l username 10.1.16.173,l表示登录名(login name)
#ssh [email protected]
注:当远程主机的公钥被接受以后,它就会被保存在$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。authorized_keys是远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。
#ssh [email protected] ‘ifconfig’
Ssh可将被连接主机上的命令运行后返回本机
- 基于密钥的认证->使用非对称加密算法
用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回远程主机。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求输入密码,这和之前的ssh账号密码也没有直接关系。
#ssh-keygen –t rsa #也可以不加-t rsa
#ssh-copy-id [email protected]
#ssh [email protected]
3.scp及sftp简单应用
Scp:基于ssh的远程复制命令,可以实现在主机之间传输数据
Scp 【option】src dest
将远端文件复制到本地
(1)Root用户
#scp [email protected]:/etc/passwd /mnt #复制文件
#scp –r [email protected]:/tmp/ /mnt #递归复制目录
#scp –p [email protected]:/tmp/file /mnt #复制保留权限
将本地文件复制到远端
#scp file [email protected]:/mnt #复制文件
#scp –r tom [email protected]:/mnt #递归复制目录
#scp –p file [email protected] :/mnt #复制保留权限
(2)普通用户
#useradd tom
#su – tom
#scp file [email protected]:/mnt #tom复制文件到对方的root的mnt目录下#scp file [email protected]: #tom复制文件file’到jerry的家目录下
#scp –r dir [email protected]: #tom复制目录dir到jerry的家目录下
(3)Sftp简单应用
Sftp [email protected]
可以使用put、get等命令上传下载文件