7

我正在尝试通过以下命令从本地主机连接到远程主机。但是远程主机中有一个设置,在我们登录后不久它会提示输入徽章 ID、密码和登录原因,因为它在如何克服这些步骤并以非交互方式直接登录的profile文件中进行了这样的编码,而不会干扰.remote-hostprofile

jsmith@local-host$ ssh -t -t generic_userID@remote-host
Enter your badgeID, < exit > to abort:
Enter your password for <badgeID> :
Enter a one line justification for your interactive login to generic_userID
4

3 回答 3

8

小修改:克服远程服务器期望方法是必需的,但如果本地脚本连接到一堆远程服务器,可能会破坏配置,只需使用 SSH 选项:

ssh -f -q -o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null USER@TARGETSYSTEM

如果没有 ssh_key 设置,这将省略询问密码,静默退出并继续使用脚本/其他主机。

使用 将 ssh 置于后台-f,这是从(批处理)文件调用ssh命令sh以删除本地控制台重定向到远程输入时所必需的(隐含-n)。

于 2018-02-04T12:01:35.613 回答
3

研究在expect周围设置一个包装脚本。这应该完全符合您的要求。

以下是一些您可以参考的示例。

于 2013-06-20T10:18:07.060 回答
0

我赞成Marvin Pinto 的回答,因为完全有理由编写此脚本,以防您需要的配置文件中还有其他功能,例如 Message of the Day motd

但是,如果您不想制作脚本并且不希望配置文件中的其他功能,则有一个快速而肮脏的替代方案。根据您在远程主机上首选的 shell,您可以坚持让 shell 绕过配置文件。例如,如果bash在远程主机上可用,您可以使用以下命令调用它:

ssh -t -t generic_userID@remote-host bash --noprofile

我在 macOS 10.13 版本的 OpenSSH 上测试了上述内容。通常 ssh 调用结束时的命令以非交互方式运行,但该-t标志允许bash启动交互式 shell。

详细信息在 Bash 参考手册的启动文件部分

于 2017-12-31T11:11:07.373 回答