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

相关推荐
A小辣椒5 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒9 小时前
TShark:基础知识
linux
AlfredZhao11 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式