首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行远程命令

执行远程命令
EN

Unix & Linux用户
提问于 2018-01-23 21:49:57
回答 3查看 1.5K关注 0票数 5
  1. 我无法编辑连接到的fs的.bashrc
  2. 我必须使用~/.ssh/config文件

下面是我的当前配置:

代码语言:javascript
复制
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。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2018-01-23 22:14:22

如果您指定了一个远程命令,那么当远程命令退出时,ssh连接就会关闭。cd命令几乎会立即退出。

做你想做的事的一个常见方法是:

代码语言:javascript
复制
RemoteCommand cd /some/path && bash

(将所需的shell替换为"bash")。这个cd指向路径,如果cd操作成功,则调用一个子subshell。当子subshell退出时,ssh连接将关闭。

您还需要强制ssh为会话分配一个PTY:

代码语言:javascript
复制
RequestTTY yes

如果没有,那么ssh在默认情况下不会请求一个,并且您将得到一个非交互式的shell会话。值得注意的是,您不会得到命令提示符。

票数 10
EN

Unix & Linux用户

发布于 2018-01-23 22:05:24

如果指定了RemoteCommand,则与以下内容相同:

代码语言:javascript
复制
ssh user@host <command>

所发生的情况是,ssh连接到主机,运行命令和出口,并将命令的退出状态作为ssh的退出状态返回。

从手册页:

如果指定了命令,则它将在远程主机上执行,而不是在登录shell上执行。

因此,您正在登录到主机,更改目录,然后退出ssh。我怀疑这是你想要的。远程命令是非交互式的,即在远程计算机上运行一个特定的命令.

票数 3
EN

Unix & Linux用户

发布于 2018-01-23 22:10:21

尝试运行ssh -t my-ssh。您可能需要强制进行伪终端分配,这是配置在~/..ssh/ config中省略的。

票数 -2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/419198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档