通过命令行使用密钥登录远程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)。

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

相关推荐
江畔柳前堤17 小时前
github实战指南01-账号配置与 SSH 密钥
运维·人工智能·深度学习·ssh·github·pyqt·信号处理
Moshow郑锴19 小时前
Ubuntu 26.04 中文输入法 : fcitx5+Rime中州韵引擎
linux·运维·ubuntu
小赖同学啊21 小时前
智能连接器集群化高可用生产方案
linux·运维·人工智能
wanghao66645521 小时前
DevOps 从入门到实践:构建高效交付流水线
运维·devops
qq_5469372721 小时前
从“能用”到“超神”,DeepSeek++给网页版装上“大脑”和“手脚”,支持长期记忆、MCP工具与自动化任务!
运维·自动化
ZStack开发者社区21 小时前
基于AI Agent的ZCF API文档全链路自动化
运维·人工智能·自动化
Moshow郑锴1 天前
Ubuntu 26.04 更换阿里云源镜像
linux·运维·ubuntu
迷糊小面包1 天前
Docker Hadopp集群版部署搭建及常规问题解疑
运维·docker·容器
ShineWinsu1 天前
对于Linux:线程概念与分页存储管理的解析
linux·运维·服务器·面试·线程·进程·虚拟空间地址
器灵科技1 天前
AI视频工具实测:Seedance/可灵/HappyHorse谁最能打?
java·运维·数据库·人工智能·github