ssh免密远程登录主机并执行命令

2023-12-13 11:33:10
命令:ssh -t -t root@192.168.11.2 "cd /home/test/; ls -l"

这条命令是使用 SSH 客户端连接到远程主机 192.168.11.2,并以 root 用户的身份登录。具体来说,命令的各部分作用如下:

  • ssh: 开始 SSH 客户端。
  • -t -t: 告诉 SSH 客户端在远程服务器上分配一个伪终端,以便在该终端上运行命令,并向远程服务器发送两个 -t 参数以确保正确性。
  • root@192.168.11.2: 指定远程主机的用户名和 IP 地址/主机名。
  • "cd /home/test/; ls -l": 指定要在远程服务器上执行的命令,该命令包括两个部分:
    • cd /home/test/ 命令将远程服务器上的当前工作目录更改为 /home/test/
    • ls -l 命令将列出 /home/test/ 目录中的所有文件和子目录,并显示文件的详细信息。

因此,这条命令将首先连接到远程服务器,然后切换到 /home/test/ 目录,并列出该目录中的所有文件和子目录。如果您需要在远程服务器上执行其他命令,只需将它们添加到同一个字符串中,并用分号分隔即可。值得一提的是,命令执行完后,SSH 客户端会自动退出并关闭连接。

命令不需要输入密码:

这是因为在您第一次使用SSH客户端连接到远程主机时,您可能会看到一条消息,“是否要将此主机的公钥添加到已知主机列表中?”。如果您同意将公钥添加到已知主机列表中,则 SSH 将在本地计算机上创建一个匹配该主机的记录,并使用该记录验证未来的连接。

在将公钥添加到已知主机列表后,SSH 客户端会自动使用与该主机关联的私钥进行身份验证,从而无需再次输入密码。因此,在您第二次或随后的连接尝试中,SSH 客户端会直接使用已知主机列表中的私钥进行身份验证,并免去了重新输入密码的步骤。

查看公钥信息

在Linux系统中,已知主机列表存储在用户主目录下的.ssh目录中的known_hosts文件中。您可以使用以下命令查看已知主机列表中的信息:

ssh-keygen -F <hostname>

其中,&lt;hostname>是指远程主机的名称或IP地址。执行此命令后,会显示匹配的主机名、公钥类型、公钥摘要以及公钥本身。如果已在该主机上添加了多个密钥,则会显示所有匹配的密钥。

如果您想删除该主机的记录,可以使用以下命令进行删除:

ssh-keygen -R <hostname>

其中,&lt;hostname>是您要删除记录的主机名或IP地址。执行此命令后,会删除已知主机列表中该主机的所有记录。

ssh-keygen 是一个命令行工具,用于生成、管理和转换 SSH(Secure Shell)协议的身份验证密钥。SSH 是一种安全协议,用于加密远程访问远程系统和在系统之间进行安全数据传输。

ssh-keygen 实用程序可以为 SSH 协议基于身份验证的生成私钥和公钥对。私钥保存在客户端系统上,而公钥则复制到要访问的远程系统上。

ssh-keygen 命令有几个选项和子命令,允许用户生成和管理密钥对、转换密钥格式、设置密钥文件权限或撤销对密钥的访问。

以下是一些最常用的选项和子命令的简要总结:

  • -t: 指定要创建的键的类型,例如 "rsa"、"ed25519"、"ecdsa" 等。

  • -b: 指定要生成的密钥中的位数。默认值为 2048 位。

  • -f: 指定输出密钥文件的文件名。

  • -N: 为私钥设置新的密码短语。

  • -p: 允许用户更改私钥的密码短语。

  • -i: 将私钥转换为 OpenSSH 兼容格式。

  • -e: 将 OpenSSH 私钥或公钥文件转换为另一种格式。

  • -y: 从 OpenSSH 私钥文件中提取公钥。

  • -L: 显示公钥文件的指纹。

  • -R: 从已知主机列表中删除主机。

  • -A: 生成所有缺失的主机密钥。

总的来说,ssh-keygen 是一个功能强大的实用程序,对于生成、管理和保护 SSH 密钥非常有用,这些密钥对于安全的远程访问至关重要。

文章来源:https://blog.csdn.net/songpeiying/article/details/134838409
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。