从零开始使用SSH链接目标主机(包括Github添加SSH验证,主机连接远程机SSH验证)

添加ssh密钥(当前机生成和远程机承认)

以下是从头开始生成自定义名称的SSH密钥的完整步骤(以GitHub为例,适用于任何SSH服务):


1. 生成自定义名称的SSH密钥对

bash 复制代码
# 生成密钥对(-t 指定算法,-f 指定路径和名称,-C 添加注释)
ssh-keygen -t ed25519 -f ~/.ssh/github_mykey -C "my@email.com"
  • 参数说明:

    • -t ed25519:推荐使用更安全的Ed25519算法(若系统不支持,可用 -t rsa -b 4096)。
    • -f ~/.ssh/github_mykey:自定义密钥路径和名称(此处生成 github_mykey(私钥)和 github_mykey.pub(公钥))。
    • -C "注释":可选,用于标识密钥用途(如邮箱)。
  • 交互提示:

    • 直接狂按回车跳过密码(或设置一个密钥密码增强安全性)。

生成密钥对

上传远程主机

2. 将公钥上传到目标服务

2.1 GitHub/GitLab等平台:

  1. 复制公钥内容:
bash 复制代码
   cat ~/.ssh/github_mykey.pub
  1. 登录GitHub → Settings → SSH and GPG keys → New SSH key,粘贴公钥。

2.2 修改服务器配置

适用于连接远程服务器的情况

复制代码
# 确保远程主机已开启 SSH 服务
sudo apt update 
sudo apt install openssh-server  # Ubuntu
sudo systemctl enable --now sshd   # 启动并设置开机自启

# 检查 SSH 服务状态
sudo systemctl status sshd
复制代码
# 修改SSH的配置
nano /etc/ssh/sshd_config
# 在服务器上检查以下关键配置
PasswordAuthentication yes      # 是否允许密码登录
PubkeyAuthentication yes       # 是否允许密钥登录
PermitRootLogin no             # 是否禁止root登录(建议禁用)

sudo systemctl restart sshd

2.2.2 自有服务器:

将公钥追加到服务器的 ~/.ssh/authorized_keys

bash 复制代码
ssh-copy-id -i ~/.ssh/github_mykey.pub user@server_ip

(若命令不可用,手动复制公钥内容到服务器的 ~/.ssh/authorized_keys 文件中)

3. 配置SSH客户端(在本机处理)

编辑或创建 ~/.ssh/config 文件,指定自定义密钥:

bash 复制代码
nano ~/.ssh/config

添加以下内容(以GitHub为例):

复制代码
Host github.com
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/github_mykey
  IdentitiesOnly yes
  • 关键参数:
    • IdentityFile:指向你的自定义私钥路径。
    • IdentitiesOnly yes:避免SSH尝试默认密钥。

4. 测试连接

bash 复制代码
ssh -T git@github.com
  • 成功时会显示:
    Hi {username}! You've successfully authenticated...

总结

  1. ssh-keygen -f 生成自定义密钥。
  2. 上传 .pub 公钥到目标服务。
  3. 通过 ~/.ssh/config 指定私钥路径。
  4. 测试并修复权限问题。
相关推荐
sg_knight3 分钟前
Docker环境下的MinIO安装,以及如何正确配置数据持久化(避坑篇)
运维·docker·容器·minio·ftp·cos·oss
Agent产品评测局1 小时前
物流供应链自动化解决方案选型,全链路提效指南:从硬件集成到AI Agent的演进路径
运维·人工智能·ai·chatgpt·自动化
钟智强1 小时前
Linux SSH密码爆破脚本,从原理到实践
linux·运维·ssh
Linux蓝魔2 小时前
麒麟官方yum源配置V10SP2-V10SP3-V10SP3-2403
大数据·linux·运维
helloliyh2 小时前
linux 删除指定日期目录(包括目录下文件)
linux·运维·服务器
半个俗人2 小时前
06.Linux用户权限相关命令
linux·运维·服务器
涛声依旧393162 小时前
构建部署kubernetes所需主机
linux·运维·云原生·容器·kubernetes
Chris _data2 小时前
S7-1500 常用工业通信协议详解与对比
运维·服务器·网络
dashizhi20152 小时前
服务器共享文件禁止下载、禁止拖动共享文件到本地磁盘、禁止拷贝共享文件
运维·服务器·windows
实在智能RPA3 小时前
Agent上线后有专人运营支持吗?深度解析AI Agent的全生命周期运维保障体系
运维·人工智能·ai