服务器之间的免密登录

95 阅读3分钟

要通过SSH密钥认证在165服务器直接访问103服务器,你需要完成以下步骤来配置SSH密钥:


1. 在165服务器上生成SSH密钥对

如果165服务器上还没有SSH密钥对,可以使用以下命令生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa:指定密钥类型为RSA。
  • -b 4096:指定密钥长度为4096位(更安全)。
  • -C "your_email@example.com":添加注释(可选,通常用邮箱标识)。

按提示操作:

  1. Enter 接受默认的密钥保存路径(通常是 ~/.ssh/id_rsa)。
  2. 设置一个密码(可选,如果不想设置密码,直接按 Enter)。

生成后,密钥对会保存在 ~/.ssh/ 目录下:

  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub

2. 将公钥复制到103服务器

将165服务器生成的公钥(id_rsa.pub)复制到103服务器的 ~/.ssh/authorized_keys 文件中。

方法 1:使用 ssh-copy-id 命令(推荐)

如果165服务器上安装了 ssh-copy-id,可以直接运行以下命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@103.server.ip
  • -i ~/.ssh/id_rsa.pub:指定公钥文件。
  • user@103.server.ip:103服务器的用户名和IP地址。

运行后,输入103服务器的用户密码,公钥会自动添加到103服务器的 ~/.ssh/authorized_keys 文件中。

方法 2:手动复制公钥

如果没有 ssh-copy-id,可以手动完成:

  1. 在165服务器上查看公钥内容:

    cat ~/.ssh/id_rsa.pub
    

    复制输出的内容。

  2. 登录到103服务器:

    ssh user@103.server.ip
    
  3. 在103服务器上,将公钥添加到 ~/.ssh/authorized_keys 文件中:

    mkdir -p ~/.ssh  # 如果 .ssh 目录不存在,先创建
    chmod 700 ~/.ssh  # 设置权限
    echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys  # 设置权限
    

3. 测试SSH密钥认证

在165服务器上尝试通过SSH登录103服务器:

ssh user@103.server.ip

如果配置正确,你应该可以直接登录,而无需输入密码。


4. 使用SSH密钥认证执行命令

现在你可以直接在165服务器上使用SSH密钥认证访问103服务器,例如:

ssh user@103.server.ip "mkdir -p /data/html/abc/dist"

或者使用 scp 复制文件:

scp -r /path/to/8330_dist/* user@103.server.ip:/data/html/abc/dist/

5. 注意事项

  1. 文件权限

    • 确保103服务器上的 ~/.ssh 目录权限为 700
    • 确保 ~/.ssh/authorized_keys 文件权限为 600
  2. SSH配置文件: 如果需要简化登录,可以在165服务器的 ~/.ssh/config 文件中添加以下内容:

    Host 103
        HostName 103.server.ip
        User user
        IdentityFile ~/.ssh/id_rsa
    

    之后可以直接使用 ssh 103 登录。

  3. 安全性

    • 不要泄露私钥(id_rsa)。
    • 如果需要更高的安全性,可以为私钥设置密码。

完成以上步骤后,你就可以通过SSH密钥认证从165服务器直接访问103服务器了!