嵌套ssh调用时,为什么不加载rc文件?

时间:2019-07-06 14:47:30

标签: ssh

我跑步时

ssh user1@server1 'ssh user2@server2'

我可以登录,但是我的rc文件无法加载。即使当我source .zshrc时,我仍然有一个空白提示并且没有颜色。我什至尝试使用exec zshexec bash作为后备,但没有任何变化。这是怎么回事,我该如何解决?

1 个答案:

答案 0 :(得分:1)

避免问题

首先不要这样做。相反,请使用ssh内置的ProxyJump支持:

ssh -o 'ProxyJump user1@server1' user2@server2

您甚至可以通过将以下内容放入server2文件中来自动实现到~/.ssh/config的所有连接:

Host server2
    ProxyJump user1@server1

解释问题

一些行为在起作用:

  • 通过ssh传递命令时,默认情况下不会创建TTY(除非传递了-t-tt)。这会影响任何被调用程序操纵终端设置的能力。 isatty(0)还是进行“上午互动”的常规方式。校验。如果没有将Shell的stdin附加到TTY,则这是它可以确定其不是交互式的一种方式。
  • 当shell以"$SHELL" -c "command"启动时-就像ssh在传递命令运行时一样-它不会以交互方式运行,因此不会强制{{1} }文件(明确供交互式使用)。