1、服务器配置ssh
使用的服务器系统为 ubuntu系统20.04
首先确认服务器是否已安装SSH,已安装的话会返回openssh 的相关信息,返回为空表示未安装
dpkg -l | grep openssh-server
如果没有安装,进行安装
sudo apt update
sudo apt install openssh-server
安装成功后,启动ssh服务
sudo systemctl start ssh
sudo systemctl enable ssh
允许防火墙 通过SSH连接
sudo ufw allow 22/tcp
检查是否启动成功
sudo systemctl status ssh
返回:
查看服务器的主机名hostname 和 用户名
hostname -I
ls /home/
查看 ssh 端口port,默认的端口号为22
sudo ss -tulnp | grep sshd
如果需要配置ssh的config文件,可以用vi或者nano对Config文件的内容进行修改
sudo vi /etc/ssh/sshd_config
编辑完后按 Esc
,
:w
保存文件
:wq
or ZZ
保存并退出
:x
保存并退出(只有当文件被修改时才保存)
:q
退出(未修改时)
:q!
强制退出不保存
或者
sudo nano /etc/ssh/sshd_config
编辑完后按
Ctrl
+ O
保存
屏幕底部显示 File Name to Write: [当前文件名],保持原文件名,直接按 Enter 回车,要另存为新文件,输入新文件名后按回车
Ctrl
+ X
退出
2、本地主机秘钥对
本地主机:windows11
使用Git Bash 检查本地是否现有SSH密钥
ls -al ~/.ssh
返回:
如果看到 id_rsa (私钥) 和 id_rsa.pub (公钥),说明已有密钥对
如果没有,新增秘钥
ssh-keygen -t rsa -b 4096
输入保存路径(默认按回车使用 ~/.ssh/id_rsa)
输入密钥密码(可选但推荐,为空则直接回车)
秘钥成功生成后,会在本地用户路径C:\Users\本地用户名.ssh文件夹中看到 id_rsa和 id_rsa.pub
3、上传公钥至服务器
依然是本地主机 Git bash 输入
cat ~/.ssh/id_rsa.pub
输出一段以ssh-rsa开头 以 邮箱结尾的秘钥
复制输出的全部内容,在Ubuntu服务器上执行:
mkdir -p ~/.ssh
echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
检查服务器中公钥文件是否存在
ls -l ~/.ssh/authorized_keys
检查文件中的内容
cat ~/.ssh/authorized_keys
4、配置服务器的公钥信息
打开ssh_config中关于秘钥的相关配置
sudo vi /etc/ssh/sshd_config
编辑文件,找到PubkeyAutentication 删掉前面的#号,并更改为:
保存并退出,修改后重启ssh服务:
sudo systemctl restart ssh
检查SSH服务秘钥是否修改配置成功
sudo grep -E '^PubkeyAuthentication|^AuthorizedKeysFile' /etc/ssh/sshd_config
输出:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys```
表明此时已允许密钥认证
检查秘钥的权限
ls -ld ~/.ssh && ls -l ~/.ssh/authorized_keys
应该输出
drwx------ 2 username username 4096 日期 .ssh
-rw------- 1 username username 567 日期 authorized_keys
5、测试连接
在ubuntu服务器中检查日志
sudo tail -f /var/log/auth.log
会显示log变化,不要关闭,回到本地windows主机,输入命令
ssh -i ~/.ssh/id_rsa username@服务器IP -p 端口号
连接成功后,服务器的log中会显示
Accepted publickey for 服务器主机名 from 本地IP port 本地端口号
等链接信息