使用 SSH 执行远程导出命令并保持登录状态

使用 SSH 执行远程导出命令并保持登录状态

我有一个简单的问题,需要通过 ssh 执行导出命令,然后保持登录状态,但我遇到了一些麻烦。虽然出于多种原因,我对这个问题的解决方案很感兴趣,但主要原因是我可以自定义将终端选项卡设置为我选择的名称。

这是我迄今为止的命令:

ssh -t root@somehost "export PROMPT_COMMAND=''; echo -ne '\033]0;MY_TAB_NAME'; echo -ne '\007'; /bin/bash -i"

这真是太神奇了,我想我差不多就做到了。-t 选项打开一个 pty(伪终端),而 /bin/bash -i 打开一个交互式 bash 会话(因此在执行 ssh 命令后保持登录状态)。export 命令只是清除提示符,以便以下 echo 重命名它。

我遇到的问题是导出似乎没有在正确的 shell 中执行。我想我错过了一些非常简单的东西。

此外,我试图使它完全基于命令行,而无需使用各种 .bash 文件。我连接了数百台服务器,并且有一种简单的方法可以标记所有连接,但只需要某种方法来自定义终端中每个选项卡的名称(Mac OS X,如果有更简单的解决方案,愿意使用 iTerm)。

谢谢!

答案1

也许您应该考虑使用~/.ssh/environmentenvironment选项~/.ssh/authorized_keyssshd(8)有关详细信息,请参阅手册页。

答案2

ssh host -t VAR=VALUE bash --login

答案3

我有一个简单的问题,需要通过 ssh 执行导出命令,然后保持登录状态 [...]

仅解决您的主要问题,无需深入研究其他问题。如果您想导出一些变量(或其他环境内容),您可以使用env

env命令可让您在修改后的环境中运行程序。因此,您可以bash -i随意使用它在远程服务器中运行修改的环境。

我只举一个例子:

hmontoliu@laptop:~$ ssh -t remoteuser@remoteserver env EXPORTEDSTUFF='foo' MOREXPORTEDSTUFF='bar' bash -i
remoteuser@remoteserver's password: 
remoteuser@remoteserver:~$ echo $EXPORTEDSTUFF 
foo
remoteuser@remoteserver:~$ echo $MOREXPORTEDSTUFF 
bar

检查 env 的手册页

高血压

相关内容