如何以非交互方式进行远程ssh

时间:2013-06-13 14:34:45

标签: ssh non-interactive

我正在尝试通过以下命令从本地主机连接到远程主机。但是远程主机中有一个设置,我们登录后很快就会提示输入徽章ID,密码和登录原因,因为它的编码方式与profile上的remote-host文件的编码方式相同如何在不干扰profile中的代码的情况下,如何克服这些步骤并以非交互方式直接登录。

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

3 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:2)

查看围绕expect设置包装器脚本。这应该完全符合您的要求。

Here是您可以使用的一些示例。

答案 2 :(得分:-1)

我赞成this site,因为如果您需要的个人资料中有其他功能,例如当天的消息Marvin Pinto's answer,则有充分理由编写此脚本。

但是,如果您不想制作脚本并且不想要个人资料中的其他功能,则会有一个快速而又脏的选择。根据远程主机上的首选shell,您可以坚持shell绕过配置文件。例如,如果远程主机上有-t,则可以使用以下命令调用它:

bash

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

详情为motd