从零开始使用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. 测试并修复权限问题。
相关推荐
一心0923 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上3 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
你想考研啊4 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins
代码老y4 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
典学长编程5 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
你想考研啊7 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins
Code blocks7 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins
饥饿的半导体8 小时前
Linux快速入门
linux·运维
我在看世界10 小时前
家里vscode连公司内网vscede
vscode·ssh
还是奇怪10 小时前
Linux - 安全排查 2
linux·运维·安全