通过SSH执行远程命令

通过SSH执行远程命令
igor@IgorReinCloud ~/dbhandler $ ssh [email protected]:/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(+)

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

[编辑]

我想要实现的目标如下:

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

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

因此,我的最终目标是执行 git pull 从本地计算机(Linux)执行 git 来更新位于远程计算机(OSX)上的存储库。

我希望现在我想实现的目标已经很清楚了。

[/编辑]

答案1

<是一个重定向操作符文件作为输入。git pull是命令,不是文件。你可以这样做:

echo "git pull" | ssh [email protected]:/dbhandler/dbhandler

或者正确的方法:

ssh [email protected]:/dbhandler/dbhandler git pull

看一下可能的调用man ssh

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

那里有一个可选命令。

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

ssh [email protected] bash -c "cd /dbhandler/dbhandler && git pull"

^ 我认为执行命令时您的路径不应该在那里。有了bash -c "some-commands"你就可以规避这个问题。

编辑:

经过澄清后,似乎一个好的解决方案是将 Mac 的项目文件夹安装在 Linux 计算机上并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还没有更新,您可以尝试自己编译并安装编译后的版本。

相关内容