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

复制代码
命令: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 密钥非常有用,这些密钥对于安全的远程访问至关重要。

相关推荐
琥珀.14 分钟前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu37 分钟前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈2 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
slongzhang_4 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮4 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
无足鸟ICT4 小时前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器
Escalating_xu4 小时前
【Linux 网络编程】应用层协议 HTTP(下):Header、连接管理与 C++ HTTP 服务器
linux·服务器·网络
GeW7 小时前
新质生产力路线图落地,Linux运维与数据库架构师的机会清单
linux
Brilliantwxx7 小时前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
father_12278 小时前
Greenplum 集群故障恢复与主备同步机制实战
linux·网络·greenplum