SSH - 运行命令,然后给我一个 shell

SSH - 运行命令,然后给我一个 shell

这个问题让我想起了自己的一个。我想创建一个别名,它将ssh连接到一台机器,运行一个命令(在本例中,cd是连接到一个提供的路径),然后给我一个 shell。我已经运行了上百种这样的变体:

$ ssh user@machine 'cd /some/path/ && bash -i -l'

这大概是我能做的最好的了。它给了我正确目录中的 bash 提示符,但没有作业控制,也没有使用箭头键(和一些其他快捷方式)的能力。有没有简单的方法可以做到这一点?

我无法在我的 bashrc 或配置文件的末尾轻松地做到这一点,因为我想要去的路径会有所不同(我会将它作为参数传递给别名),偶尔,我甚至会 ssh 到那台机器而不想去任何奇怪的地方——主目录就可以了。

答案1

尝试为 ssh 提供-t让其分配终端的选项。

答案2

查看 sshd 手册页,Authorized_keys 文件格式部分。里面有选项 command="command",这是当该密钥连接时要执行的操作。连接的原始包含命令包含在变量中。

您可以将此命令设置为使用启动脚本运行 bash,该脚本检查原始命令值并运行它,然后让您处于交互式 shell 中。

答案3

这将会有所不同,因为cd它不是一个命令,而是一个改变程序当前工作目录的 shell 内置命令。

恐怕我从来没有真正找到一个好方法来做到这一点 - 但也许这将有助于澄清一些困惑。

答案4

我认为执行此操作的最佳位置cd /some/path/.bashrc远程机器。

相关内容