SSH免密登录服务器
1.什么是SSH?
SSH(Secure Shell)是一种网络协议,主要用于为远程登录会话和其他网络服务提供安全的传输通道。
安全性:通过加密技术对数据传输进行加密,防止数据在传输过程中被窃取、篡改或监听。它采用非对称加密算法(如 RSA、DSA、ED25519 等)进行密钥交换和身份验证,确保只有授权用户才能访问远程系统,大大提高了网络通信的安全性。
非对称加密:非对称加密算法会生成一对密钥,即公钥(Public Key)和私钥(Private Key) 。这两个密钥在数学上相关,但不能由公钥推导出私钥,也不能由私钥推导出公钥。公钥是公开的,可以分发给任何需要与持有私钥的一方进行通信的人;而私钥则由密钥的所有者妥善保管,严格保密。
主要功能:
- 远程登录:允许用户从本地计算机安全地登录到远程服务器,就像在本地操作一样执行各种命令。例如,系统管理员可以在办公室通过 SSH 远程管理服务器,进行软件安装、配置调整等操作。
- 文件传输:支持安全的文件传输,常见的有 SCP(Secure Copy)和 SFTP(SSH File Transfer Protocol)。用户可以方便地在本地和远程服务器之间上传或下载文件,而不用担心传输过程中的数据安全问题。
- 端口转发:可以创建安全的端口转发通道,将本地端口与远程服务器的端口进行映射,实现对一些原本不安全的服务(如数据库服务)的安全访问。
2.白话浅析
- 首先需要生成一个密钥对,这个密钥对一个公的,一个母的,世界上只有这两个可以配对。公的比较短,我们把他叫做叫公钥,母的比较长,我们把他叫做私钥
- 然后把私钥存在我们的电脑上,把公钥存在要登录的服务器上
- 然后有登录行为发生时,服务器就可以通过公钥来匹配我们的私钥,如果成功配对就允许登录,如果配对失败就拒绝登录
3.步骤记录
- 首先在电脑上打开终端,输入下面的命令,根据提示操作,生成一个ssh密钥(以rsa加密算法为例)
1 | ssh-keygen -t ed25519 |
生成的密钥会保存在C盘的用户目录下,其中有.pub后缀的是公钥,另一个是私钥
2.服务器上需要安装SSH软件(已有可跳过)
更新软件包列表
1 | sudo apt update |
安装openssh服务
1 | sudo apt install openssh-server |
检查ssh服务状态
1 | sudo systemctl status ssh |
3.在服务器上添加电脑的公钥
在服务器上创建 ~/.ssh
目录(如果不存在的话)
1 | mkdir -p ~/.ssh |
然后创建或编辑 authorized_keys
文件
1 | touch ~/.ssh/authorized_keys |
添加一行记录,内容为复制的我们电脑上的公钥
1 | vim ~/.ssh/authorized_keys |
3.然后尝试登录服务器(我这里使用FileZilla配置登录参数后连接成功)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 青花鱼の小栈!
评论