远程登陆
在实际生产中,我们总会使用到一些远程的服务管理
随着时间推移,我们在Linux时会学习到使用字符远程管理
下面来了解一下有关OpenSSH的知识:
OpenSSH(Open Secure Shell)是一组用于在Linux系统上进行安全的远程登录和数据通信的开源软件
它包括 ssh 命令,用于远程连接到服务器,以及 sshd 命令,即运行在远程服务器上的守护进程
在Linux系统中管理OpenSSH的主要任务包括安装、配置、开启/关闭服务、以及创建和管理SSH密钥
- 安装: 在大多数Linux发行版上,OpenSSH已经预安装。如果没有,你可以使用包管理器安装它
- 对于基于Debian的系统,如Ubuntu,运行:
sudo apt-get install openssh-server - 对于基于RHEL的系统,如CentOS和Fedora,运行:
sudo yum install openssh-server
- 配置:
OpenSSH的主要配置文件位于
/etc/ssh/sshd_config
可以使用文本编辑器编辑这个文件来设置或修改许多配置选项,例如:
- 更改默认端口:
Port 22,(例如,将其更改为Port 2222) - 禁止root登录:将
PermitRootLogin设置为no - 仅允许特定用户登录:添加或修改以下行:
AllowUsers username1 username2
保存更改后,需要重启SSHD服务以便应用新的配置
- 开启/关闭服务:
- 启动OpenSSH服务:
sudo systemctl start sshd - 停止服务:
sudo systemctl stop sshd - 重新启动服务:
sudo systemctl restart sshd - 检查服务状态:
sudo systemctl status sshd - 设置为开机自动启动:
sudo systemctl enable sshd - 取消开机自动启动:
sudo systemctl disable sshd
- 创建和管理SSH密钥: SSH密钥对用于在客户端和服务器之间建立安全连接。SSH密钥对包括一个公钥和一个私钥
- 生成一个新的SSH密钥对:运行
ssh-keygen命令,会提示输出文件路径以及添加口令保护私钥
默认情况下,生成的密钥存储在~/.ssh目录下 - 配置服务器以接受连接:将客户端的SSH公钥复制到服务器的
~/.ssh/authorized_keys文件。可以使用ssh-copy-id命令完成此操作
例如:ssh-copy-id username@remote-host
基于密码认证的SSH
SSH创建远程交互shell,结束时使用exit
ssh 命令格式
ssh REMOTEHOST [COMMAND] 远程主机的地址
ssh USERAREMOTEHOST [COMMAND] 用户名+主机名
下面举一个例子来说明用法:
我们使用ssh workstation命令连接workstation主机
但是发现报了一个无法成功连接该主机的错误
出现这个错误的原因主要是因为
该workstation主机未启动,所以先要先启动该主机,才能进行连接
现在连接成功了,可以看到我们的前导符已经变成了student@workstation了
这样我们就可以控制远程主机了
免密登录
在SSH登录过程中,存在着两种方式进行验证:
- 密码验证
- 密钥验证
在密码和密钥同时存在的时候,密钥优先
在默认情况下,先使用密钥登录
对于密钥而言,存在着两种: - 公钥 相当于锁头,用于验证私钥
可以安全地分享给其他人
它用于加密数据或验证签名
公钥用于加密消息,只能用与其对应的私钥解密
公钥一般是由私钥派生生成的,因此可以在安全地分发给其他人用于加密通信和验证签名
- 私钥 相当于钥匙,认证凭据
私钥相对于公钥是机密的,只能由密钥所有者保持私密
私钥用于解密已加密的消息或生成数字签名
私钥永远不应该泄露给他人,因为掌握私钥可以解密公钥加密的消息或伪造数字签名
我们可以通过ls ~ /ssh命令来查看当前客户端的私钥
id_rsa即为私钥
当删除这个文件后,我们再进行主机连接,则需要密码
我们也可以使用ssh-keygen命令生成密钥
我们可以先将.ssh/内的所有连接配置文件删除
之后我们再次连接workstation主机(默认不允许root连接)
可以看到这里出现了第一次登陆主机的提示
我们选择yes后即可成功登录
但是此时我们的密钥对已经被删除
此时我们便可以使用ssh-keygen
再确认了文件地址存放密钥对,确认了密钥密码之后便成功生成
我们再重新使用ls .ssh/命令来查看即可发现文件重新生成
known_host文件内保留的是主机指纹,证明登陆过的主机信息都保留在里面
如果我们想要实现免密登录
我们需要将公钥拷贝到目标主机中
使用ssh-copy-id USERAREMOTEHOST命令
默认需要将公钥拷贝至~/.ssh/authorized keys文件夹中
对称加密与非对称加密
对称加密和非对称加密是两种常见的加密方式,它们有以下不同:
- 密钥数量:对称加密只使用一个密钥,加密和解密都需要使用该密钥;非对称加密则使用一对密钥,即公钥和私钥
- 密钥保护:对称加密密钥需要在两个通信方之间安全地交换;而非对称加密的公钥可以通过明文传输,而私钥必须被妥善保管,不能泄露给其他人
- 加密速度:对称加密算法通常比非对称加密算法要快,因为它们只需一个密钥就可以加密或解密数据;而非对称加密算法需要使用复杂的数学函数来加密和解密,速度较慢
- 可扩展性:对称加密对于使用相同密钥的通信双方数量有限;反之,非对称加密可以在不泄露私钥的情况下,任意地通过公钥加密信息,因为私钥只在接收方处解密
- 安全性:对称加密的主要安全威胁是密钥的安全性;如果密钥泄露了,那么加密信息的安全就受到危害了;而非对称加密则能够提供更好的安全保障,因为它采用了复杂的加密方法,即使公钥暴露了也不会影响加密信息的安全
在实际应用中,通常使用对称加密算法来加密数据,因为对称加密算法的加密速度比非对称加密算法更快,同时对称加密算法提供的安全性也足够满足绝大部分安全需求