You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨机执行Linux命令的最佳方式及Django项目SSH免密配置方法

Hey there! Let's tackle your two questions about running Linux commands on remote machines—super common scenarios, especially when you're building apps like your Django image recognition tool.

1. 从一台机器向另一台发送Linux命令的最佳方式

There are a few solid options depending on your use case:

  • 直接通过SSH执行命令:这是最直接、轻量的方式,不需要额外工具。格式很简单:ssh username@remote_host "your_command_here"。比如你要远程重启服务,就用ssh john@192.168.1.100 "sudo systemctl restart nginx"。适合单次或简单的命令执行,像你Django项目里触发单个命令的场景就很合适。
  • 配置自动化工具(如Ansible/SaltStack):如果需要批量执行命令、管理多台机器,或者有复杂的执行逻辑,这些工具会更高效。Ansible用YAML写playbooks,能定义一系列任务,比如批量更新系统、部署应用,而且也是基于SSH的,上手不算难。
  • 使用远程执行框架(如Fabric):对于Python开发者(比如你用Django),Fabric是个不错的选择,它用Python脚本封装远程操作,能轻松集成到你的Django项目里,方便自定义逻辑。
2. 取消SSH执行远程命令时的密码输入(设置免密登录)

每次输入密码确实麻烦,而且自动化场景下根本没法手动输入,所以设置SSH密钥认证是必须的。步骤如下:

  1. 在本地机器生成SSH密钥对:打开终端,执行ssh-keygen -t ed25519(ed25519是更安全的算法,也可以用rsa,但推荐前者)。按回车默认保存路径(~/.ssh/id_ed25519),然后可以设置一个密码短语(可选,如果你想更安全的话,不过自动化场景可以留空)。
  2. 将公钥复制到远程机器:最简单的方法是用ssh-copy-id username@remote_host,执行后输入一次远程机器的密码,它就会自动把公钥添加到远程机器的~/.ssh/authorized_keys文件里。
    • 如果ssh-copy-id不可用,也可以手动复制:先查看本地公钥内容cat ~/.ssh/id_ed25519.pub,然后登录远程机器,创建~/.ssh目录(如果没有的话):mkdir -p ~/.ssh,然后把公钥内容追加到authorized_keys文件:echo "你的公钥内容" >> ~/.ssh/authorized_keys。
  3. 权限检查(关键!):远程机器的~/.ssh目录权限必须是700,authorized_keys文件权限必须是600,不然SSH会拒绝密钥认证。执行这两个命令修复:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  4. 测试免密登录:在本地执行ssh username@remote_host,如果不需要输入密码直接登录成功,那以后执行远程命令也不用输密码了,比如ssh username@remote_host "your_command"就直接跑起来了。

另外,如果你的Django项目是用进程执行SSH命令的(比如用Python的subprocess),要确保运行Django的用户(比如www-data或者你的本地用户)能访问到SSH密钥对,权限也要设置正确哦。

内容的提问来源于stack exchange,提问作者Adarsh Maurya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:40:49