前言
SSH(Secure Shell)是一种加密网络协议,用于远程登录和安全传输数据。在Linux系统中,SSH服务是一种常见的远程管理工具,允许用户通过安全的连接远程访问和控制Linux服务器。
以下是关于Linux中SSH服务的一些重要信息:
1. 连接方式:使用SSH协议,客户端可以通过SSH命令行工具或图形界面工具(如PuTTY)与远程Linux服务器建立连接。
2. 加密通信:SSH使用对称密钥加密和非对称密钥加密来保护传输的数据。这使得数据在网络上传输时不容易被窃听或篡改。
3. 用户身份验证:SSH提供多种身份验证方式,常见的有密码验证和公钥验证。密码验证是最基本的方式,用户需要输入用户名和密码来登录。公钥验证使用密钥对,客户端将私钥保存在本地,而公钥则添加到服务器上的授权文件。
4. 安全性设置:Linux系统管理员可以对SSH服务进行安全性设置,例如限制允许登录的用户、禁用密码验证、限制SSH访问的IP地址等。
5. 文件传输:除了远程登录,SSH还支持安全文件传输。使用SCP(Secure Copy)命令可以将文件从本地复制到远程服务器,或从远程服务器复制到本地。
总而言之,SSH服务在Linux中是一种安全可靠的远程管理工具,使用户能够远程登录和管理服务器,以及传输文件并运行图形界面应用程序。
一、概述
1.概念: 安全外壳协议,提供安全可靠的远程连接
2.特点:1)ssh是工作在传输层和应用层的协议;
2)ssh提供了一组管理命令ssh、scp、sftp、ssh-copy-id
3)提供了多种身份验证机制
二、身份验证机制及验证过程
1.验证机制:1)密码验证:需要提供密码
2)密钥对验证: 无需提供密码,直接登录
2.验证过程:1)客户端发起请求:ssh服务器IP地址
2)确认是否保存指纹信息,yes确认保存
3)输入目标主机密码
4)打开子shell建立会话
5)若退出,输入exit即可
三、加密机制
1)单向加密: 不可逆的加密算法
2)对称加密: 加密和解密使用相同的密钥
3)非对称加密: 加密和解密使用一组密钥对(公钥、私钥)
四、基本参数
1.服务名sshd 端口号22/TCP
2.配置文件:
1)服务器端 /etc/ssh/sshd_config 是 ssh主程序sshd的配置文件
/etc/ssh/ssh_host_*是 服务器的公钥和私钥文件
~/.ssh/authorized_keys是 密钥库文件
2)客户端 /etc/ssh/ssh.config是客户端的全局配置文件
~/.ssh/known_hosts是 客户端存储服务器主机指纹的文件
~/.ssh.id_rsa是 客户端生成的私钥
~/.ssh.id_rsa.pub是 客户端生成的公钥
没有绝对的客户端和服务器,主要是看谁是发起端,谁是接收端
3.配置文件解析:
1)/etc/ssh/sshd_config
Port 监听端口
Listenaddress 监听地址,0.0.0.0表示监听所有地址
PubkeyAuthentication 是否启用密钥对验证
PasswordAuthentication 是否启用密码验证
PermitEmptyPasswords 是否启用空密码,密码验证时,最好关闭
AuthorizedKeysFile .ssh/authorized_keys 密钥库文件
2)/etc/ssh/ssh_config
ConnectTimeout 连接超时时间
五、基本操作
1)ssh作用:远程连接的客户端工具
格式:
ssh [options] [user@]hostname [command]
指定端口-p 指定网卡-b
2)scp作用:基于ssh的远程复制命令,可实现下例类型的操作
本地<-->本地
本地<-->远程
远程<-->远程
3)sftp 作用:安全的文件传输程序
4)密钥对验证 作用:提供免交互的密码验证。步骤如下:
客户端生成密钥对 ssh-keygen
客户端将公钥上传至服务器 ssh-copy-id
服务器启用密钥对验证
客户端测试
六、操作
1.打开3台虚拟机1、2、3,分别设置IP为192.168.1.1 192.168.1.2 192.168.1.3 并互相验证通联性
2.在虚拟机1上创建用户hy设置密码123并使用虚拟机2连接1
密码登录:
1)在1上创建用户
2)在虚拟机2上的家目录ls -al查看发现是没有ssh的目录
在虚拟机2使用hy登录ssh hy@192.168.1.1并输密码,这就是密码登录
当我们想退出时输入exit,此时输入ls -al查看会发现出现了隐藏目录.ssh
查看.ssh 其中known_hosts表示客户端存储服务器主机指纹的文件
但是虚拟机1上是没有的
免密登录:
1)免密登录就是需要设置我们的秘钥对,我们再虚拟机上2上操作输入ssh-keygen生成密钥对
2)将公钥发送给虚拟机1输入
ssh-copy-id 192.168.1.1
此时查看虚拟机1的文件ls -al 发现多了.ssh而且里面的authorized_keys则是密钥库文件
3)验证:在虚拟机2上验证无密登录虚拟机1
3.在虚拟机2上创建文件1.test到虚拟机1上
1)不登录操作
使用我的虚拟机2输入
ssh 192.168.1.1 mkdir 1.test
使用虚拟机1验证
2)登录操作
在虚拟机2上登录1输入ssh 192.168.1.1登录,创建文件mkdir 2.test
验证使用虚拟机1验证
4.传输文件
1)本地<-->本地
在虚拟机2上对1操作,拷贝1.test到var命令scp 192.168.1.1:1.test /var/
验证:虚拟机1查看
2)本地<-->远程
把1.test传输到虚拟机2,登录虚拟机1,命令scp 1.test/ 192.168.1.2:/var/传输
3)远程<-->远程
在虚拟机1的1.text中创建1.txt并把它 传送到虚拟机3的var命令scp 192.168.1.1:1.test/1.txt 192.168.1.3:/var
登录虚拟机3验证