--- title: 通过SSH密钥连接LINUX服务器 description: 本文介绍如何通过SSH密钥连接LINUX服务器 date: 2025-07-22 tags: ['SSH', '密钥', 'Linux'] cover: 'https://picsum.photos/800/221' --- ## 前提条件 使用**ROOT**用户(个人喜好)、客户端使用Windows PowerShell终端、服务端使用Debian12+或是Ubuntu24+ ## 客户端操作 ### 创建密钥对 随便在哪按 WIN + X 再按 I 打开PowerShell终端 进入用户的.ssh文件夹 ```shell cd ~\.ssh ``` 创建密钥对,使用椭圆加密算法,相比RSA更加短小精悍 ```shell ssh-keygen -t ed25519 ``` 输出Enter file in which to save the key,是对密钥对进行命名,我这里输入test 之后输出Enter passphrase (empty for no passphrase),是对私钥进行加密,输入私钥的密码(不会显示),不设置就按Enter跳过 然后确认密码,依旧按Enter跳过 出现一个方框图形,表示创建成功 之后 ~\.ssh 文件夹中会出现一个 test 私钥文件和一个 test.pub 公钥文件 至此,客户端的操作暂时结束 ## 服务端操作 ### 上传公钥至服务器 #### 创建实例阶段 在创建实例阶段,如阿里云服务器,可以在**管理设置-登录凭证**中选择密钥对;**登录名**选择root;**密钥**对选择右边创建密钥对 创建密钥对界面,密钥对名称随意;创建类型选择导入已有密钥对, 在客户端Windows电脑中进入 ~\.ssh文件夹中,找到第一步创建的test.pub,用任意编辑器打开后,复制其内容到公钥内容框中,标签键随意, 然后回到实例创建页面,在密钥对选择刚刚创建的密钥对即可 #### 已有服务器 使用SSH密码登录到服务器,切换到ROOT用户 ```shell sudo -i ``` ##### 复制公钥到服务器 进入/root/.ssh文件夹 ```shell cd /root/.ssh ``` 创建或编辑 authorized_keys 文件 ```shell vim authorized_keys ``` 按 I 进入编辑模式,将公钥内容复制进去 按 Esc ,输入 :wq 保存并退出 ##### 编辑SSH-SERVER配置文件 进入/etc/ssh文件夹 ```shell cd /etc/ssh ``` 编辑sshd_config文件 ```shell vim sshd_config ``` 同样按 I 进入编辑模式,并确保下列三个参数如下 ```shell PermitRootLogin yes #允许使用ROOT用户登录 PubkeyAuthentication yes #使用密钥对 PasswordAuthentication no #禁用密码 ``` 按 Esc 退出编辑模式,输入 :wq 保存并退出 ##### 重启SSH-SERVER服务 一般使用 ```shell systemctl restart sshd ``` 不行就试试 ```shell service ssh restart ``` ##### **不要断开SSH连接,防止配置有问题连接不上** ## 使用密钥对进行连接 ### 直接连接 新开一个PowerShell终端 ```shell ssh -i ~/.ssh/test root@192.168.21.5 ``` 输出 Enter passphrase for key 提示输入私钥密码(输入的内容不会显示),之前没设置就直接按 Enter ;不出意外就可以连接上了 ### 编辑config文件进行简便连接 **注意:** 只用使用Windows的终端才能简便连接,使用mobaxterm等ssh软件这个配置是没用的 在Windows客户端中,进入 ~\.ssh 文件夹 ```shell cd ~\.ssh ``` 使用记事本编辑config文件 ```shell noteapd config ``` 格式如 ```shell Host test HostName 192.168.21.5 IdentityFile ~/.ssh/test User root ``` 如果端口不是22,则需要加上端口,如ssh使用222端口 ```shell Host test HostName 192.168.21.5 IdentityFile ~/.ssh/test Port 222 User root ``` 保存 然后在PowerShell终端中就可以进行简便连接如 ```shell ssh test ``` 这里的test是 config 文件 Host 后的字符,可以用Emoji表情 **注意:** 在使用SSH密钥对克隆GitHub或是其他git相关网站时,Host最好设置为网站的域名,你问为什么?时间的教训罢了~ ## 至此教程结束