通过SSH执行远程命令

Igo*_*gor 0 ssh remote

igor@IgorReinCloud ~/dbhandler $ ssh igorkorot@192.168.1.3:/dbhandler/dbhandler < git pull
bash: git: No such file or directory
igor@IgorReinCloud ~/dbhandler $ git pull
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 4 (delta 3), reused 4 (delta 3), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/oneeyeman1/dbhandler
   667ca95..4a93607  master     -> origin/master
Updating 667ca95..4a93607
Fast-forward
 libdbwindow/databasecanvas.cpp | 1 +
 1 file changed, 1 insertion(+)
Run Code Online (Sandbox Code Playgroud)

这是否意味着我应该在git pull内部创建某种脚本才能正确执行?还是我做错了什么?

[编辑]

我想要实现的是以下内容:

我在我的 Linux 机器上试图连接到我的一台 OSX 笔记本电脑 (192.168.1.3)。这台 Mac 笔记本电脑运行的是 OSX 10.8。直到最近一切都运行良好,但随后 GitHub 从使用 SSL 1.0 切换到 SSL 1.2 或类似的东西。当然,尝试从 OSX 执行远程操作现在失败了。

但是,如果我尝试在 Linux 上执行此操作,一切都会按预期进行,因为 Git/OpenSSL 的 Linux 版本较新,因此运行 git pull/fetch/push/etc 将成功。

所以我的最终目标是执行 git pull 从本地机器 (Linux) 执行 git 以更新位于远程机器 (OSX) 上的存储库。

我希望现在清楚我想要实现的目标。

[/编辑]

Ctr*_*l-C 6

<是一个将文件重定向为输入的运算符。git pull是一个命令,而不是一个文件。你可以这样做:

echo "git pull" | ssh igorkorot@192.168.1.3:/dbhandler/dbhandler
Run Code Online (Sandbox Code Playgroud)

或者正确的方法:

ssh igorkorot@192.168.1.3:/dbhandler/dbhandler git pull
Run Code Online (Sandbox Code Playgroud)

看看可能的调用man ssh

ssh (...) [用户@] 主机名 [命令]

你在那里有一个可选的命令。

我想知道您的命令是否不需要额外的修复:

ssh igorkorot@192.168.1.3 bash -c "cd /dbhandler/dbhandler && git pull"
Run Code Online (Sandbox Code Playgroud)

^ 我认为执行命令时您的路径不应该存在。有了bash -c "some-commands"你可以规避这一点。

编辑:

经过澄清,似乎一个很好的解决方案是在 Linux 机器上安装 Mac 的项目文件夹并git在那里使用,同时在 Mac 上做其他所有事情。您可以使用SSHFShttps : //www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh

我的首选解决方案是升级 Mac 的 git,使其支持 SSL 1.2。如果 Mac 还没有更新,你可以尝试自己编译并安装编译后的版本。