概念
安全外壳协议,提供安全可靠的远程连接
特点
ssh是工作在传输层和应用层的协议
ssh提供了一组管理命令
ssh 远程登陆
scp 远程拷贝
sftp 远程上传下载
ssh-copy-id
ssh keygen 生成
提供了多种身份验证机制
身份验证机制
密码验证 需要提供密码
密钥对验证 无需提供密码,直接登录
验证过程
客户端发起请求 ssh 服务器IP地址
确认是否保存指纹信息,yes确认保存
输入目标主机密码
打开子shell建立会话
若退出,则使用exit
加密机制
单向加密 不可逆的加密算法
对称加密 加密和解密使用相同的密钥
非对称加密 加密和解密使用一组密钥对(公钥、私钥)
基本参数
服务名 sshd
端口号 TCP/22
配置文件
服务器端
/etc/ssh/sshd_config ssh主程序sshd的配置文件
/etc/ssh/ssh_host_* 服务器的公钥和私钥文件
~/.ssh/authorized_keys 密钥库文件
客户端
/etc/ssh/ssh.config 客户端的全局配置文件
~/.ssh/known_hosts 客户端存储服务器主机指纹的文件
~/.ssh.id_rsa 客户端生成的私钥
~/.ssh.id_rsa.pub 客户端生成的公钥
没有绝对的客户端和服务器,主要是看谁是发起端,谁是接收端
配置文件解析
/etc/ssh/sshd_config
Port 监听端口
Listenaddress 监听地址,0.0.0.0表示监听所有地址
PubkeyAuthentication 是否启用密钥对验证
PasswordAuthentication 是否启用密码验证
PermitEmptyPasswords 是否启用空密码,密码验证时,最好关闭
AuthorizedKeysFile .ssh/authorized_keys 密钥库文件
/etc/ssh/ssh_config
ConnectTimeout 连接超时时间
基本操作
ssh
作用:远程连接的客户端工具
格式:ssh [options] [user@]hostname [command]
实验
指定用户登录
新建或用已有用户
1.useradd lwj01 创建用户
2.passwd lwj01 修改密码
3.用普通用户远程客户端
4.ssh root@192.168.1.2
5.输入正确密码后登陆成功
不登录执行命令
1.ssh root@192.168.1.2 mkdir /opt/111 -p
2.不登陆情况创建名为111的文件夹
.
3.192.168.1.2虚拟机验证
指定端口 -p
指定网卡 -b
scp
作用:基于ssh的远程复制命令
实验
本地<-->本地
操作本机为本地与本地操作,不需要实验
本地<-->远程
案例:把opt文件夹下111文件夹复制到~下
192.168.1.2虚拟机验证
远程<-->远程
案例:把192.168.1.2虚拟机opt下11.txt文件复制到192.168.1.3虚拟机~下
192.168.1.3虚拟机验证
sftp
作用:安全的文件传输程序
语法:sftp 地址ip
输入密码后会进入输入命令模式
ls
:列出远程服务器上当前目录的文件列表。pwd
:显示当前所在的远程服务器目录。cd
:切换远程服务器上的目录。get <remote_filename>
:从远程服务器下载文件到本地。put <local_filename>
:将本地文件上传到远程服务器。rm <remote_filename>
:删除远程服务器上的文件。mkdir <directory_name>
:在远程服务器上创建目录。
密钥对验证
作用:提供免交互的密码验证
实验
客户端生成密钥对 ssh-keygen
客户端将公钥上传至服务器 ssh-copy-id
服务器启用密钥对验证
客户端测试
生成密钥对:首先,在本地计算机上生成密钥对,一个私钥(通常存储在本地计算机上)和一个公钥(要上传到远程服务器)。可以使用以下命令生成密钥对:
ssh-keygen -t rsa
上传公钥到远程服务器:将生成的公钥上传到远程服务器上,这可以通过以下命令完成:
ssh-copy-id username@remote_host
其中,username是您在远程服务器上的用户名,remote_host是服务器的IP地址或域名。
验证密钥对登录:完成上述步骤后,可以尝试使用密钥对进行SSH登录。使用以下命令:
ssh username@remote_host
如果一切顺利,现在应该可以无需输入密码即可登录到远程服务器。
禁用密码登录(可选):为了增加系统的安全性,建议禁用密码登录,并只允许密钥对登录。要禁用密码登录,需要修改SSH服务器的配置文件。打开 /etc/ssh/sshd_config 文件,并确保以下行处于注释状态:
#PasswordAuthentication yes
确保以下行没有被注释:
PubkeyAuthentication yes
保存修改并重启SSH服务:
sudo service ssh restart
现在,只能使用密钥对进行SSH登录。 请注意,密钥对验证是一种安全且推荐的身份验证机制。但为了维护系统的安全性,确保您的私钥存储在受密码保护的位置,并定期更换密钥。