📜  将authorized_keys中的条目从windows添加到linux主机-Shell-Bash(1)

📅  最后修改于: 2023-12-03 15:25:15.421000             🧑  作者: Mango

将 authorized_keys 中的条目从 Windows 添加到 Linux 主机

当我们在 Windows 系统上生成公钥和私钥时,可以将公钥添加到 Linux 主机的 authorized_keys 文件中,从而实现无密码登录。本文将介绍如何使用 Bash 脚本将 Windows 生成的公钥添加到 Linux 主机中的 authorized_keys 文件中。

准备工作

在 Windows 系统上使用 Git Bash 生成公钥和私钥。生成公钥的命令如下:

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

生成的公钥和私钥文件会保存在 ~/.ssh/ 文件夹下。使用以下命令将公钥复制到剪贴板中:

clip < ~/.ssh/id_rsa.pub

在 Linux 主机上,确保 authorized_keys 文件存在并可读可写,如果不存在则可以使用以下命令创建:

touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
将公钥添加到 authorized_keys 文件

使用以下 Bash 脚本可将 Windows 生成的公钥添加到 Linux 主机中的 authorized_keys 文件中:

#!/bin/bash

# 将公钥添加到 authorized_keys 文件中的函数
function add_key() {
    if [ $# -lt 2 ]; then
        echo "Usage: add_key user host [port] [password]"
        return 1
    fi

    local user=$1
    local host=$2
    local port=${3:-22}
    local password=$4
    local ssh_key="$(pbpaste)"
    local ssh_opts="-o StrictHostKeyChecking=no"

    if [ -n "$password" ]; then
        sshpass -p "$password" ssh-copy-id -p $port $ssh_opts $user@$host
    else
        ssh-copy-id -p $port $ssh_opts $user@$host
    fi
}

# 调用 add_key 函数添加公钥到 authorized_keys 文件中
add_key user host

该脚本包含一个 add_key 函数,函数的作用是将公钥添加到 Linux 主机中的 authorized_keys 文件。函数参数依次为 userhostportpassword,其中 user 为 Linux 主机的用户名,host 为 Linux 主机的 IP 地址或域名,port 默认为 22,表示 SSH 的默认端口,password 表示登录 Linux 主机所需的密码(如果不需要输入密码则可以留空)。该脚本使用 pbpaste 命令将公钥从剪贴板中读取,并使用 ssh-copy-id 命令将公钥添加到 authorized_keys 文件中。如果需要输入密码,则使用 sshpass 命令自动输入密码。

运行脚本

将脚本保存为 add_key.sh 并赋予可执行权限:

chmod +x add_key.sh

然后在 Git Bash 中运行脚本:

./add_key.sh user host

其中 userhost 分别为 Linux 主机的用户名和 IP 地址或域名。如果需要输入密码,则可以加上 -p 参数:

./add_key.sh user host -p password
结语

使用 Bash 脚本将公钥添加到 Linux 主机中的 authorized_keys 文件中,可以方便地实现无密码登录,提高工作效率。