Files
BlogPosts/文章/技术类/通过SSH密钥连接LINUX服务器.md
zibright 14f2125e8d udpate
2025-07-22 17:57:13 +08:00

112 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SSH舍弃密码拥抱密钥
## 前提条件
使用**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最好设置为网站的域名你问为什么时间的教训罢了~
## 至此教程结束