通过命令行使用密钥登录远程SSH主机

通过命令行使用密钥登录远程SSH主机的步骤如下:


1. 生成SSH密钥对(客户端)

在本地终端执行以下命令生成密钥对(默认保存路径为~/.ssh/id_rsa):

bash 复制代码
ssh-keygen -t ed25519 -C "your_email@example.com"  # 推荐ed25519算法(兼容性更好)
# 若服务器较旧,改用RSA算法:ssh-keygen -t rsa -b 4096
  • 按提示选择保存路径(默认即可),可设置密钥锁码(可选)。
  • 生成的文件:
    • id_ed25519(私钥):需严格保密。
    • id_ed25519.pub(公钥):需上传至服务器。

2. 将公钥上传至服务器

方法一:自动上传(推荐)
bash 复制代码
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip

输入服务器密码后,公钥会自动追加到服务器的~/.ssh/authorized_keys文件中。

方法二:手动上传
  1. 复制公钥内容:

    bash 复制代码
    cat ~/.ssh/id_ed25519.pub  # 查看并复制公钥
  2. 登录服务器并操作:

    bash 复制代码
    ssh username@server_ip
    mkdir -p ~/.ssh
    echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
    chmod 700 ~/.ssh  # 设置目录权限
    chmod 600 ~/.ssh/authorized_keys  # 设置文件权限

3. 配置SSH客户端使用密钥

在本地~/.ssh/config文件中添加以下配置(可选):

bash 复制代码
Host myserver
  HostName server_ip
  User username
  Port 22          # 若非默认端口需修改
  IdentityFile ~/.ssh/id_ed25519  # 私钥路径

配置后,直接执行ssh myserver即可登录。


4. 通过命令行直接登录

使用以下命令指定私钥文件:

bash 复制代码
ssh -i ~/.ssh/id_ed25519 username@server_ip -p port_number
  • -i:指定私钥路径。
  • -p:若服务器SSH端口非默认22,需指定端口号。

5. 服务器端SSH配置(可选)

为提升安全性,建议在服务器修改/etc/ssh/sshd_config

bash 复制代码
PubkeyAuthentication yes    # 启用公钥认证
PasswordAuthentication no   # 关闭密码登录(可选)
PermitRootLogin yes         # 允许root登录(按需设置)

修改后重启SSH服务:

bash 复制代码
sudo systemctl restart sshd  # Ubuntu/Debian
sudo service ssh restart     # CentOS/RHEL

通过SSH在TRAE里面访问远程主机:参见

常见问题排查

  • 权限错误 :确保服务器.ssh目录权限为700authorized_keys600
  • 密钥不匹配:检查公钥是否完整复制,或重新生成密钥对。
  • SELinux拦截 :执行restorecon -Rv ~/.ssh修复(仅CentOS)。

通过以上步骤,即可实现基于密钥的无密码登录,提升远程连接的安全性。

相关推荐
旺仔.2912 小时前
僵死进程及Linux文件操作 详解
linux·运维·服务器
IMPYLH2 小时前
Linux 的 comm 命令
linux·运维·算法
淡泊if2 小时前
1.2GB → 98MB,我的 Docker 镜像瘦身实战记录
运维·docker·容器
Sst的头号粉丝2 小时前
Docker——cgroups
运维·docker·容器
JuckenBoy3 小时前
Linux环境安装SGLang框架运行自选大模型(以Rocky9.7为例)
linux·运维·大模型·qwen·rocky·deepseek·sglang
十巷无终3 小时前
Kali Virtual Machines(虚拟机镜像)安装后问题及解决办法
linux·运维·服务器
架构指南3 小时前
Centos上安装Claude Code报GLIBC_2.27 not found
linux·运维·centos
Predestination王瀞潞4 小时前
4.3.1 存储->微软文件系统标准(微软,自有技术标准):exFAT(Extended File Allocation Table)扩展文件分配表系统
linux·运维·microsoft·exfat·ex4
你有按下913的勇气吗4 小时前
【Agent,RAG,Transform】
linux·运维·服务器