我有三台服务器 A、B 和 C。我需要做的是运行如下命令:
my_self@A:~$ ssh B "ssh C run_a_script_here"
如果我在 A、B、C 上正确设置了 ssh 密钥,并且不使用 SSH 密码,则此方法有效。但如果我以具有 SSH 密码的其他用户身份运行此命令,则会收到错误:
user_has_passphrase@A:~$ ssh B "ssh C run_a_script_here"
Pseudo-terminal will not be allocated because stdin is not a terminal.
user_has_passphrase@A: Permission denied (publickey).
我在 A 和 B 上为 user_has_passphrase 设置了钥匙串,我可以从 A 执行 ssh B,然后在 B 上执行 ssh C,没有任何问题。
我不确定是否使用密码,我什至可以执行链 ssh 或不执行。
任何想法?
谢谢,菲利普
答案1
如果您想使用检查(伪)终端的交互,例如sudo
身份验证,或者在本例中,使用密码进行密钥身份验证,您可以使用开关-t
,ssh
根据手册,将:
强制伪终端分配。
如果需要,可以将其链接起来,例如
$ ssh -t B "ssh -t C run_a_script_here"