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

我有一个简单的问题,需要通过SSH执行导出命令,然后保持login,但我有一些麻烦。 虽然我有兴趣解决这个问题的原因很多,但主要是我可以自定义我的terminal标签到我select的名称。

这是我迄今为止的命令:

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

这是一个相当愚蠢的,我想我只是在那里。 -t选项打开一个pty(伪terminal),而/ bin / bash -i打开一个交互式bash会话(因此在执行ssh命令后保持login状态。export命令只是清除提示符,以便下面的回显重命名它。

我遇到的问题是,出口似乎并没有在正确的shell执行。 我想我错过了很简单的事情。

此外,我正在尝试使这个纯粹的命令行而不必使用各种.bash文件。 我有数百个连接到的服务器,并且有一个简单的方法来为所有连接添加书签,但是只需要一些方法来为我的terminal中的每个选项卡定制名称(Mac OS X,如果有更简单的解决scheme,愿意使用iTerm)。

谢谢!

也许你应该在~/.ssh/authorized_keys中使用~/.ssh/environmentenvironment选项。 有关详细信息,请参见sshd(8)手册页。

 ssh host -t VAR=VALUE bash --login 

我有一个简单的问题,需要通过SSH执行导出命令,然后保持login[…]

只是为了解决你的主要问题,而不是在你的问题的其余部分挖掘太多。 如果你想导出一些variables(或其他环境的东西),你可以使用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的手册页

HTH