如何正确地通过 SSH 连接到主机并通过一个命令附加 LXC 容器?

如何正确地通过 SSH 连接到主机并通过一个命令附加 LXC 容器?

我想通过 SSH 通过 Proxmox 连接到 LXC 容器,而无需通过 SSH 访问容器本身,因此我可以通过先连接到 Proxmox 主机然后运行lxc-attach <ID>连接到我的容器来获得所需的结果。

现在我想一次性完成这件事。为此,我的 rc 文件中有一个函数:

sshc() { ssh $1 "lxc-attach $2; bash -i" }

它有效,但在终端中它看起来像这样:

我在提示中没有看到用户名和当前目录名

这应该看起来不同,即:

root@root1543:~# lxc-attach 1111
root@container:~# pwd
/root
root@container:~#

我想在当前 shell 中查看用户和主机,但在我的解决方案中没有看到。

我还考虑过更改 SSH 配置中的 RemoteCommand,但显然,不可能将参数传递到 RemoteCommand 中,因此我放弃了该尝试。

答案1

将“-t”选项添加到您的ssh调用中:

sshc() { ssh -t $1 "lxc-attach $2; bash -i" }

ssh使用在远程系统上运行的命令调用时,默认情况下它不会为会话分配 TTY。添加“-t”告诉 ssh 为会话请求 TTY。

交互式会话通常通过 TTY 进行操作,以提供某些功能,例如使用退格键编辑您键入的内容的能力。您的 shell 还使用 TTY 的存在来确定是否进行交互操作,例如通过打印命令行提示符。

相关内容