1、ssh服务协议
SSH是Secure Shell Protocol的简写,,由 IETF 网络工作小组(Network Working Group )制定;对数据进行加密传输的服务,确保了传递的数据安全,主要用在远程登陆,工作在应用层。
加密方式
对称加密:加密解密的钥匙是同一把(速度快)
非对称加密:生成一对公私钥,私钥自己保管,公钥可以给别人,一个用于加密,一个用于解密(安全性高)
命令
#以root用户远程登录
ssh root@192.168.8.128
参数 | 作用 |
-l | 指定登录用户名 |
-p | 指定server的端口 |
-i | 指定私钥文件,默认会在~/.ssh/去找私钥 |
-o | 接特定设置选项 |
#无需输入yes,自动保存hostkey,端口223
ssh -o StrictHostKeyChecking=no 192.168.0.132 -p 223
3、登录验证原理
密码登录
- client向server发送登陆请求,server将自己的公钥发送给client
- client使用这个公钥,将密码进行加密,发送给server
- server用私钥解密登陆密码,验证合法性
- server返回验证结果给client
公钥认证登录
- client端生成公钥对,将公钥追加在server端的~/.ssh/authorized_keys
- 发送登陆请求,server收到请求之后,生成随机字符串发送给client
- client用自己的私钥对字符串进行加密,发送给server
- server收到加密字符串之后用公钥解密,比较解密出的字符串和之前生成的字符串事发后一致
- 返回结果给client
4、秘钥登录配置
1、在client上生成公私钥对,默认会放在当前用户家目录下的.ssh/文件下生成一个id_rsa(私钥),id_rsa.pub(公钥)
[root@mysql-binary ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #存放公私钥的路径
Enter passphrase (empty for no passphrase): #为秘钥对创建密码
Enter same passphrase again: #确认为秘钥对创建的密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:iuEkRdZ2Gz/PutGHRUs0kXO9Cwgjjlq1ish+n0i7lOU root@mysql-binary
The key's randomart image is:
+---[RSA 2048]----+
| o. +o.|
| o oooo .o.o|
| ..+.o+o . oo.|
| . o o. o. + o |
|. o *.. S + + .|
| o *++ . .oo . |
|. +oE. ..o . |
| .o.o . .. . |
| .+oo .. |
+----[SHA256]-----+
2、在server上目标用户的家目录下面~/.ssh/authorized_keys文件里将client的公钥复制粘贴过来,没有此文件就创建,并且确保这个文件的权限设为600
或者使用命令
[root@mysql-binary ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.166.8.128 #用户使用当前用户
5、配置文件中的常用配置说明
OpenSSH
官方站点:http://www.openssh.com
主要软件包:openssh-server、openssh-clients
服务名:sshd
服务端主程序:/usr/sbin/sshd
客户端主程序:/usr/bin/ssh
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
Port 2233 #修改默认监听端口(默认22端口)
#AddressFamily any
ListenAddress 192.168.0.132 #设置本机监听ip地址,默认为0.0.0.0(表示在本机任意ip地址上监听)
PermitRootLogin no #不允许root用户登陆,默认为yes
PubkeyAuthentication yes #是否开启公钥认证
AuthorizedKeysFile .ssh/authorized_keys #配置公钥认证的文件
PasswordAuthentication no #是否开启密码认证,默认为yes
UsePAM yes #使用pam认证
#pam认证模块 --》配置路径/etc/pam.d 这个目录下面存放的是每个需要认证的服务的配置,文件名就是服务名
UseDNS yes #是否将客户端主机名解析为ip
#此过程不顺利的话,会非常的慢,会影响登陆认证的速度,可以将其设置为no