目录
- 一、OpenSSH服务器
- 1.1、SSH远程管理
- 1.2、ssh服务器的端口
- 1.3、修改端口号
- 1.4、设置用户登录
- 二、实验
- 2.1、设置白名单
- 2.2、设置黑名单
- 三、sshd 服务支持两种验证方式:
- 3.1、密码验证
- 3.2、密钥对验证
- 公钥和私钥的关系:
- 四、使用SSH客户端程序
- 4.1、ssh 远程登录
- 4.2、scp 远程复制
- 1、下行复制
- 2、上行复制
- 3、使用双撇号和pwd命令来快速获取目录进行复制
- 4.3、sftp安全 的FTP文件传输
- 五、配置密钥对验证
- 5.1、在客户端创建密钥对
- 5.2、实验zhangsan用户用密钥对登录
- 5.4、另一种快速实现公钥文件的复制
- 六、ssh密钥对面交互登录
- 6.1、使用没有密码的密钥对
- 6.2、创建ssh会话代理(只能在当前会话中有效)
一、OpenSSH服务器
1.1、SSH远程管理
SSH:
是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性.
字号4
网络
SSH客户端 <----------------------------------> SSH服务端
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
SSH客户端: Putty、Xshel1、 CRT
SSH服条端: OpenSSH
OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统。Centos 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动。
rpm -q openssh
查看这个软件有没有安装
systemctl status sshd
可以查看开机有没有自动启动
systemctl is-enabled sshd
简介查看有没有开机自动启动,出现enable就是开机自启了
如果没有出现enable就
执行“svstemctl start sshd”命令即可启动 sshd 服务
1.2、ssh服务器的端口
sshd 服务默认使用的是TCP的 22端口
sshd 服务的默认配置文件是/etc/ssh/sshd confia
vim sshd_config
进入服务端的配置文件
禁止无密码用户登录
禁止用户反向解析,提高服务器的响应速度
1.3、修改端口号
netstat -natp | grep sshd
来查看当前端口号,发现已经改为2345端口号了,但是源端口号没有终端
关闭xshell就发现连接不起来了
点击主机的属性,将端口号设置为刚刚修改的2345端口号
netstat -natp | grep sshd
查看到这个端口号已经设置为2345端口
ssh root@192.168.102.10 -p 2345
root 是指定用户
@192.168.102.10 是指定对方主机的IP地址
-p 是指定对应主机的端口号
也可以在源主机上查看到有一个192.168.102.20的主机连接到这
vim /etc/ssh/sshd_config
systemctl restart sshd
设置完后重启网卡
netstat -natp | grep sshd
就可以看到已经设置本地的地址了,192.168.102.10:2345
vim /etc/ssh/sshd_config
设置完后root用户就不能打开了
则除了root用户其他用户能登录
ssh 192.168.102.10 -p 2345
没有输入用户,按下enter后就会自动补全当前用户
设置把空密码用户不允许登录
设置一个空密码用户
设置完不允许空密码登录后,这个空密码的用户就登录不了了
设置空密码用户允许登录
设置完成后,可以看见空密码用户可以登录
1.4、设置用户登录
只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为192.168.102.10的主机远程登录
AllowUsers zhangsan lisi wangwu@102.168.102.10
多个用户以空格分隔
禁止某些用户登录,用法于AllowUsers 类似 (注意不要同时使用)
DenyUsers 用户名
二、实验
先设置几个实验用户,配置密码
2.1、设置白名单
在源主机里设置了让wangwu用户只能登录在192.168.102.10配置的主机
所以wangwu用户就登录不了其他的主机
则其他用户就可以随意登录不同的主机
在192.168.102.10的主机里设置wangwu这个用户就可以登录
在任意主机上登录wolong用户,不能登录
因为在白名单里没有设置wolong
root用户也不在白名单里面所以也登录不了
在白名单里在设置一个root用户
白名单设置完后,root用户就可以登录了
2.2、设置黑名单
DenyUsers 目标用户
设置完后在黑名单里的用户就登录不了了
为什么wangwu能登录
因为在黑名单里设置的是在192.168.102.10的主机里不能登录,其他的主机可以登录
三、sshd 服务支持两种验证方式:
3.1、密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
查看secure文件,查看主机有没有被攻击
看见被攻击了,就把那些登录的IP地址给放进黑名单里
3.2、密钥对验证
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
公钥和私钥的关系:
·公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
·不能根据一个密钥来推算出另一个密钥。
·公钥对外公开,私钥只有私钥的持有人才知道。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式
vim /etc/ssh/sshd config
PasswordAuthentication yes
#启用密码验证
PubkeyAuthentication yes
#启用密钥对验证
AuthorizedKeysFile .ssh/authorized keys
#指定公钥库文件
在里面找到公钥文件
四、使用SSH客户端程序
4.1、ssh 远程登录
ssh [选项] 用户@主机的IP地址
ssh 使用小p来指定端口号
当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入"yes")后才能继续验证。
在.ssh目录里的known_hosts文件存放验证信息,如果与这个文件里的信息不一致就禁止访问,一致就同意访问
ssh命令可以使一台主机快速执行一个命令,并且执行完后就退出
ssh命令也可以实现远程主机删除本机的文件
4.2、scp 远程复制
1、下行复制
将远程主机中的文件复制到本机
scp root@192.168.102.20:/opt/john-1.8.0.tar.gz ./
192.168.102.20 表示对方主机的IP地址
:/opt/表示对方的目录,后面跟上要复制的目录文件
绝对路径
在最后面加上 . / 表示将对方主机的opt目录里的文件复制到当前主机目录里
2、上行复制
将本机的目录复制到远程主机上
scp -P 2345 -r dznb/ 192.168.102.10:/root/
- 大P 指定对方的端口号
- r 将本机的目录复制到远程主机
dznb/ 本机的目录
192.168.102.10 远程主机的IP地址
:/root/ 指定复制到远程主机的 root 目录里,绝对路径
如果有同名目录的话,复制的内容会直接覆盖
3、使用双撇号和pwd命令来快速获取目录进行复制
直接按下波浪号键,不加shift键
4.3、sftp安全 的FTP文件传输
由于使用了加密/解密技术,所以传输效率比普通的FTP要低,但安全性更高。操作语法sftp与ftp几乎一样
sftp -P 2345 root@192.168.102.10
在sftp命令里,要使用大P来指定对方主机的端口号
root 对方的root用户
也可以使用put命令来使远程主机上传文件到本机
sftp > get 文件名 下载文件到ftp目录
sftp > put 文件名 上传文件到ftp目录
sftp > quit 退出
五、配置密钥对验证
5.1、在客户端创建密钥对
通过ssh-keygen工具为当前用户建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等(ssh-keygen命令的"-t"选项用于指定算法类型)
将公钥文件复制到192.168.102.10主机上
在目标主机上查看到公钥文件,使用cat查看公钥文件的密钥信息
5.2、实验zhangsan用户用密钥对登录
你想要哪个客户端使用哪个用户登录,就把公钥文件导入到该文件的家目录里
现在使用zhangsan用户密钥登录
创建的文件名必须是authorized_keys
在当前用户的家目录里设置一个.shh的目录并且修改权限为7.0.0
cat id_rsa.pub >> /home/zhangsan/.ssh/authorized_keys
重定向输出到自己的家目录里的zhangsan用户到.ssh目录里创建一个authorized_keys文件
把文件的使用权限设定为6.0.0的使用权限
5.4、另一种快速实现公钥文件的复制
ssh-copy-id -p 2345 -i id_rsa.pub zhangsan@192.168.102.10
-i id_rsa.pub 指定公钥文件
-p 指定端口号
自动设置目录和文件的权限
接下来就可以使用密钥对的密码登录了
六、ssh密钥对面交互登录
6.1、使用没有密码的密钥对
ssh-keygen -t rsa/ecdsa 一路回车,不设置密码
ssh-copy-id -i 公钥文件 目标主机用户@目标主机IP/主机名
6.2、创建ssh会话代理(只能在当前会话中有效)
ssh-agent bash 在当前登录环境中实现一个代理
ssh-add 输入这个密钥对的密码
输入以上命令后就可以实现免密码登录,只能在当前会话中有效退出当前会话就会消失这个代理