使用代理转发连接到 SSH 时无提示

使用代理转发连接到 SSH 时无提示

我目前在家工作,需要连接到生产服务器。公司的安全策略不允许 VPN 客户端连接到生产实例。因此,我认为我可以通过开发服务器(我可以访问)配置代理转发,因为这是允许的。

为此,我首先为开发服务器启用了代理转发:

  1. 我在我的电脑上添加了ForwardAgent yes开发~/.ssh/config服务器条目
  2. 我运行eval 'ssh-agent'启动 ssh 代理
  3. 我使用以下方式将我的 ssh 密钥添加到代理中ssh-add ~/.ssh/id_rsa
  4. 我使用以下方式连接到开发服务器ssh -A <devserver>
  5. 在开发服务器上,我尝试使用以下方式连接到生产服务器ssh -T me@<prodserver>

此后,我能够在生产服务器上运行命令。但是,我从未看到实际的 bash 提示符。

缺少 bash 提示符

我能做些什么来确保提示出现?

在此处输入图片描述

答案1

在最后一步中,ssh不带-T选项运行:

-T      Disable pseudo-terminal allocation.

使用该-T选项实际上会禁用分配 TTY,这反过来会导致您无法获得 shell。

mtak@rubiks:~/bla(develop)$ ssh gen1
THIS IS A PRIVATE COMPUTER SYSTEM. Unauthorized access prohibited.
You have mail.
Last login: Tue Mar 10 10:45:25 2020 from vpn-int-2.int.mtak.nl
mtak@gen1:~$ logout
Connection to gen1 closed.

mtak@rubiks:~/bla(develop)$ ssh -T gen1
THIS IS A PRIVATE COMPUTER SYSTEM. Unauthorized access prohibited.
You have mail.
date
ma mrt 16 16:12:53 CET 2020

答案2

我尝试使用以下方式连接到生产服务器ssh -T me@<prodserver>

您没有收到提示,因为使用-T选项告诉 ssh 禁用终端模式(tty 分配)。

所有程序都通过 tty 来确定它们是以交互方式运行(即连接到终端/键盘)还是从文件或管道输入命令。在后一种情况下,即“批处理”模式,shell 通常会禁用所有提示;诸如“ls”之类的工具会失去其精美的格式和彩色输出;等等。

相关内容