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

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

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


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

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

    • -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 [email protected]
  • 成功时会显示:
    Hi {username}! You've successfully authenticated...

总结

  1. ssh-keygen -f 生成自定义密钥。
  2. 上传 .pub 公钥到目标服务。
  3. 通过 ~/.ssh/config 指定私钥路径。
  4. 测试并修复权限问题。
相关推荐
唯独失去了从容1 小时前
WebRTC服务器Coturn服务器的管理平台功能
运维·服务器·webrtc
roman_日积跬步-终至千里4 小时前
【K8s基础】K8s下的Helm和Operator:包管理器与运维程序化
运维·容器·kubernetes
PassLink_5 小时前
[Kaggle]:使用Kaggle服务器训练YOLOv5模型 (白嫖服务器)
运维·服务器·yolo
极小狐6 小时前
极狐GitLab 合并请求依赖如何解决?
运维·git·ssh·gitlab·github
程序猿(雷霆之王)6 小时前
Linux——进程间通信
linux·运维·服务器
Hello.Reader9 小时前
基于 Nginx 的 WebSocket 反向代理实践
运维·websocket·nginx
qq_2739002310 小时前
CentOS系统防火墙服务介绍
linux·运维·centos
小灰灰__10 小时前
Linux安装ffmpeg7.1操作说明
linux·运维·服务器
互联网搬砖老肖10 小时前
运维打铁:Centos 7 安装 redis_exporter 1.3.5
运维·redis·centos