我无法编辑我正在连接的文件系统的 .bashrc
我必须使用该
~/.ssh/config
文件
这是我当前的配置:
Host my-ssh
HostName <ip>
User <user>
IdentityFile <file location>
Compression yes
RemoteCommand cd <path to folder>
当我跑步时ssh my-ssh
什么也没有发生。连接似乎自动关闭。如果我删除RemoteCommand
线路,它就可以毫无问题地连接。
这是服务器配置上的东西吗?它是一个 EC2 实例,CentOS 或 RHEL,bash 是 shell。
答案1
如果指定远程命令,则远程命令退出后 ssh 连接将立即关闭。命令cd
几乎会立即退出。
做你想做的事情的常见方法是:
RemoteCommand cd /some/path && bash
(用您想要的 shell 代替“bash”)。此 cd 到该路径,然后在 cd 操作成功时调用子 shell。当子 shell 退出时,ssh 连接将关闭。
您还需要强制 ssh 为会话分配 PTY:
RequestTTY yes
如果不这样做,默认情况下 ssh 将不会请求,并且您将获得一个非交互式 shell 会话。值得注意的是,您不会收到命令提示符。
答案2
如果您有RemoteCommand
指定,则与以下内容相同:
ssh user@host <command>
发生的情况是ssh
连接到主机,运行命令并退出,并将命令的退出状态返回为 的退出状态ssh
。
从手册页:
如果指定了 command,则它将在远程主机上执行,而不是在登录 shell 上执行。
因此,您正在登录主机,更改目录,然后ssh
退出。我怀疑这就是你想要的。远程命令是非交互式的,即在远程计算机上运行一个特定命令。
答案3
试着跑ssh -t my-ssh
。您可能需要强制进行伪终端分配,该分配由 ~/.ssh/config 中的配置省略。