【问题标题】:Can I automate ssh connection? ssh user@server.company.com我可以自动化 ssh 连接吗? ssh user@server.company.com
【发布时间】:2023-03-16 06:07:01
【问题描述】:

我想创建一个脚本,将新连接插入到我的known_hosts 文件。

当我想将新服务器添加到 known_hosts 文件时,我手动使用此命令:

ssh user@server.company.com

然后我得到这个作为回报:

The authenticity of host 'server.company.com (XX.34.228.XXX)' can't be established.
ECDSA key fingerprint is 78:eb:28:7c:a6:19:4f:28:48:ab:0d:c6:e4:4e:dc:ff.
Are you sure you want to continue connecting (yes/no)?

当回答“是”时

我得到这个作为回报:

警告:永久添加“server.company.com XX.34.228.XXX”(ECDSA) 到已知主机列表。 user@server.company.com 的密码:

打印密码后 - 我已连接到远程服务器。

下次我想连接时,我不需要再次输入密码。

有没有办法使用 shell 脚本来自动化这个过程? 我尝试了所有这些选项都没有运气:

yes | ssh user@server.company.com

echo yes | ssh user@server.company.com

但没有任何效果

【问题讨论】:

    标签: shell networking ssh remote-access remote-server


    【解决方案1】:

    我想创建一个脚本,将新连接插入到我的 known_hosts 文件...

    ssh-keyscan

    ssh-keyscan server.company.com >> ~/.ssh/known_hosts
    

    但请注意,这是针对中间人攻击的唯一安全检查,因此除非您确实确定您和服务器之间没有任何问题,否则您应该在连接到服务器之前手动检查存储的公钥。

    要自动插入密码,您可以使用sshpass

    sshpass -p password ssh user@server.company.com
    

    但当然不建议这样做,因为密码是以明文形式存储的。

    【讨论】:

    • 这行得通,它解决了 known_hosts 问题,为了完成自动化,我需要能够在收到提示时插入密码。
    • 这是我得到的:回显密码 | ssh user@server.company.com 不会分配伪终端,因为 stdin 不是终端。 server.company.com 密码:
    猜你喜欢
    • 2011-10-10
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    相关资源
    最近更新 更多