使用远程计算机上未安装的 shell

使用远程计算机上未安装的 shell

给定场景:

  • 偏僻的机器:SSH服务器;用户没有管理员权限;
  • 当地的机器:SSH客户端;用户具有管理员权限。

如果用户,登录到偏僻的当地的,希望与偏僻的使用未安装的 shell偏僻的, 怎么能用户独自完成这件事?

例子:用户用途当地的,并且还希望将其用于偏僻的, 但偏僻的只有巴什桀骜安装。

答案1

在远程计算机上安装您最喜欢的 shell。您不需要任何管理员权限即可执行此操作,您可以在主目录中安装程序,只是不太方便。看无需root即可在debian 5 32位上安装,如何在没有 sudo 权限的情况下本地安装程序?,跟踪程序其他问题

如果您想自动登录到您自己安装的 shell 而不是默认的 shell,请参阅使 zsh 默认 shell 无需 root 访问权限

如果您只想操作远程文件,您可以使用SSHFS将远程目录树安装到本地计算机上。

mkdir ~/remote.d
sshfs remote.example.com:/ ~/remote.d
ls ~/remote.d/
fusermount -u ~/remote.d

如果您的主目录中没有空间或者它是共享帐户,您可以设置一个反向 SSH 隧道并将本地目录树挂载到远程计算机上SSHFS,假设两台机器运行相同的体系结构(相同处理器类型上的相同 UNIX 变体)。如果两台机器的架构不兼容,您甚至可以将远程架构的程序安装在本地主目录中。这可能不是很方便,因为您必须正确设置程序的路径才能找到其库、配置文件和其他数据文件。

Emacs 的埃壳兼容于流浪汉:如果您在 Eshell 中更改为远程目录,您将在远程计算机上执行命令。

答案2

简单的回答:不,您不能在远程盒子上使用未安装在远程盒子上的程序。

解决方法:您不需要管理员权限即可在远程系统上安装 shell。您可以将其安装在主目录中,但可能必须从源代码编译它。通常使用类似的东西configure --prefix=${HOME}/local

最后注意:您不能将默认 shell 更改为非“官方”shell(请参阅 参考资料/etc/shells),但您可以exec fish在您的.bashrc

答案3

用户可以使用sshfs将远程 $HOME 安装到本地计算机上。在这样的场景下,用户不会直接在远程计算机上使用他选择的 shell,但仍然比没有好。

答案4

显而易见的答案是“在远程计算机上安装命令”,这是最干净的解决方案,因此我们不应该忽略它:

如果可以以 root 身份安装该命令,例如使用
sudo apt-get install fish,则
可以像这样运行该命令:

ssh remote -t fish


问题是当我们无法安装远程计算机上的命令。
或者更具体地说,是关于我们的案例无法以 root 身份安装命令
这并不意味着我们根本无法安装!

仍然可以的是安装命令主目录内通过构建它从源头

这样做的好处是它可以处理所有相关的事情支持文件可能带有命令,以及程序如何找到它们。在fishshell 示例中,这些是完成功能等等,如果我们只复制二进制文件,所有这些都不可用fish

从源代码构建命令需要开发工具和所使用库的开发文件,这可能过于复杂。

但许多程序都将所需的所有内容都捆绑在源中,因此这可能很容易。以前很难说,但可以尝试一下。

要将命令安装到主目录中,configure请提供安装路径- 需要在构建说明中检查。例如:

mkdir ~/local
./configure --prefix=~/local 
make
make install

请注意,这并不sudo make install像平常那​​样 - 因为它是整点在本地安装它不需要 sudo 。

有关从源安装程序的一般信息,请参阅askubuntu.SE:如何安装 .tar.gz(或 .tar.bz2)文件?

相关内容