温馨提示×

怎样利用脚本实现linux ssh互信

小樊
81
2024-12-30 13:45:57
栏目: 智能运维

在Linux系统中,通过脚本实现SSH互信(即无需密码即可从一台计算机访问另一台计算机)可以通过以下步骤完成:

1. 在两台计算机上生成SSH密钥对

首先,在两台计算机上分别生成SSH密钥对。假设两台计算机分别是host1host2

host1上:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

host2上:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. 将公钥复制到另一台计算机

host1的公钥复制到host2~/.ssh/authorized_keys文件中。

host1上:

ssh-copy-id user@host2

host2的公钥复制到host1~/.ssh/authorized_keys文件中。

host2上:

ssh-copy-id user@host1

3. 创建一个脚本实现自动互信

创建一个脚本ssh_auto_trust.sh,内容如下:

#!/bin/bash

# 设置主机名和用户名
HOST1="host1"
USER1="user1"
HOST2="host2"
USER2="user2"

# 生成密钥对(如果还没有生成)
if ! ssh-keygen -q -f ~/.ssh/id_rsa; then
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
fi

# 将本地公钥添加到远程主机的authorized_keys文件
cat ~/.ssh/id_rsa.pub | ssh $USER2@$HOST2 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

# 测试连接
ssh $USER2@$HOST2

4. 设置脚本权限并运行

设置脚本权限并运行:

chmod +x ssh_auto_trust.sh
./ssh_auto_trust.sh

5. 自动添加公钥(可选)

如果你希望每次运行脚本时自动添加新的公钥,可以将公钥添加的逻辑放在脚本中,而不是使用ssh-copy-id。例如:

#!/bin/bash

# 设置主机名和用户名
HOST1="host1"
USER1="user1"
HOST2="host2"
USER2="user2"

# 生成密钥对(如果还没有生成)
if ! ssh-keygen -q -f ~/.ssh/id_rsa; then
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
fi

# 将本地公钥添加到远程主机的authorized_keys文件
cat ~/.ssh/id_rsa.pub | ssh $USER2@$HOST2 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

这样,每次运行脚本时,都会将本地的公钥添加到远程主机的authorized_keys文件中,从而实现自动互信。

注意事项

  1. 安全性:确保你的私钥文件(如~/.ssh/id_rsa)的安全,不要将其泄露给他人。
  2. 权限:确保~/.ssh目录和authorized_keys文件的权限设置正确,通常应为700600
  3. 防火墙:确保两台计算机之间的防火墙允许SSH连接。

通过以上步骤,你可以在Linux系统中通过脚本实现SSH互信。

0