Debian-linux运维-ssh配置(兼容Jenkins插件的ssh连接公钥类型)

系统版本:Debian 12.5、11.1

1 生成密钥对

可以用云服务商控制台生成的密钥对,也可以自己在客户端或者服务器上生成,

已经有密钥对就可以跳过这步

用户默认密钥文件路径为 ~/.ssh/id_rsa,可以在交互中指定路径,也可以加-f参数指定路径
注意避免用户覆盖已有密钥

bash 复制代码
ssh-keygen -t rsa  # 生成配对密钥,后续一路enter即可
#ssh-keygen -t rsa -f ~/.ssh/id_rsa

passphrase 的建议 :设置 passphrase(密码)是为了提高私钥的安全性,但如果是自动化场景 (如无交互式登录),则留空更方便。

会在用户目录(即~这个)下生成.ssh文件夹,里面的id_rsa是私钥 ,id_rsa.pub是公钥

进入.ssh文件夹中,将公钥写入到authorized_keys中,将id_rsa私钥下载并保存好

2 公钥写入

在以下命令之前,需检查 authorized_keys 文件是否已存在。如果存在直接追加,避免覆盖

bash 复制代码
cd ~/.ssh
touch authorized_keys 
cat id_rsa.pub >> authorized_keys # 直接追加到 authorized_keys

设置 .ssh 目录和 authorized_keys 文件的权限,以确保 SSH 密钥认证的安全性,防止未授权访问或潜在的安全风险

目录权限(700):保护目录及其文件不被其他用户访问。

文件权限(600):保护公钥文件内容不被篡改或读取

bash 复制代码
chmod 700 ~/.ssh
chmod 600 ~/.sshauthorized_keys

3 修改ssh配置

bash 复制代码
vim /etc/ssh/sshd_config

关键配置项说明

  • Port :
    修改默认端口(22)为其他端口,例如 12322
bash 复制代码
Port 12322
  • 禁用 root 登录 :
    禁止直接使用 root 登录,提高安全性(如非必要,建议设置为 no):
  • 以后只有一个root用户 就不用改这里!
bash 复制代码
PermitRootLogin no
  • 密钥认证和密码认证 :
    使用密钥认证并禁用密码登录(测试密钥登录成功后再修改密码登录设置):
plain 复制代码
PubkeyAuthentication yes
PasswordAuthentication no
  • 指定公钥文件路径:
bash 复制代码
# 默认是 .ssh/authorized_keys,必要时可自定义
AuthorizedKeysFile .ssh/authorized_keys
  • 指定允许的公钥类型
    针对兼容性问题(如 Jenkins 插件的 SSH 连接):
bash 复制代码
PubkeyAcceptedKeyTypes=+ssh-rsa
  • 监听特定地址: 只允许指定的 IP 地址:
bash 复制代码
ListenAddress 0.0.0.0 # 允许所有地址
ListenAddress 192.168.1.100 # 仅监听特定地址

云服务商的控制台的安全组:最好限制特定ip才能登录ssh端口

如果不用云服务商的安全组,可以使用firewall-cmd管理端口,把新的ssh端口先开放

我个人习惯是先必须修改下面几项

bash 复制代码
Port 22 #修改端口
PubkeyAuthentication yes # yes表示允许密钥登陆
# AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2 # 指定密钥的文件位置
PasswordAuthentication no # 不允许使用密码登陆,等测试密钥登陆成功了再修改此条,以防无法登陆
PubkeyAcceptedKeyTypes=+ssh-rsa #Jenkins 插件ssh连接失败Auth fail可以添加

找到对应行,进行修改

4 重启ssh

bash 复制代码
systemctl restart ssh
bash 复制代码
last
bash 复制代码
journalctl -u ssh

或者,如果你想查看实时更新:

plain 复制代码
journalctl -u ssh -f

5 测试连接

bash 复制代码
ssh -p 2202 user@server_ip

参考文章:

SSH远程管理与配置

https://blog.csdn.net/qq_47855463/article/details/116655311

相关推荐
乐迪信息2 分钟前
乐迪信息:AI摄像机识别煤矿出入井车辆数量异常检测
大数据·运维·人工智能·物联网·安全
张童瑶5 分钟前
Linux SSH配置密钥文件及免密登录
linux·运维·ssh
tianyuanwo6 分钟前
Linux密码加密技术深度解析:从盐值到加密算法的完整指南
linux·密码加密
翼龙云_cloud9 分钟前
腾讯云渠道商:腾讯云快照和镜像备份区别在哪?
运维·服务器·云计算·腾讯云
YMatrix 官方技术社区28 分钟前
YMatrix 高可用详解:3 种镜像策略在节点宕机时表现有何不同?
运维·数据库·数据仓库·ai·数据库开发·数据库架构·ymatrix
vortex539 分钟前
Bash 替换机制(三):变量替换
linux·开发语言·bash
Elastic 中国社区官方博客41 分钟前
在 Kibana 中可视化你的 Bosch Smart Home 数据
大数据·运维·elasticsearch·搜索引擎·信息可视化·全文检索·kibana
松涛和鸣42 分钟前
34、 Linux IPC进程间通信:无名管道(Pipe) 和有名管道(FIFO)
linux·服务器·c语言·网络·数据结构·数据库
小虾米vivian1 小时前
dmetl5 web管理平台 监控-流程监控 看不到运行信息
linux·服务器·网络·数据库·达梦数据库
TG:@yunlaoda360 云老大1 小时前
如何将外部镜像文件导入华为云国际站代理商的IMS服务?
linux·运维·华为云