我目前在家工作,需要连接到生产服务器。公司的安全策略不允许 VPN 客户端连接到生产实例。因此,我认为我可以通过开发服务器(我可以访问)配置代理转发,因为这是允许的。
为此,我首先为开发服务器启用了代理转发:
- 我在我的电脑上添加了
ForwardAgent yes
开发~/.ssh/config
服务器条目 - 我运行
eval 'ssh-agent'
启动 ssh 代理 - 我使用以下方式将我的 ssh 密钥添加到代理中
ssh-add ~/.ssh/id_rsa
- 我使用以下方式连接到开发服务器
ssh -A <devserver>
- 在开发服务器上,我尝试使用以下方式连接到生产服务器
ssh -T me@<prodserver>
此后,我能够在生产服务器上运行命令。但是,我从未看到实际的 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”之类的工具会失去其精美的格式和彩色输出;等等。