📅  最后修改于: 2023-12-03 15:25:15.421000             🧑  作者: Mango
当我们在 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
文件。函数参数依次为 user
、host
、port
和 password
,其中 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
其中 user
和 host
分别为 Linux 主机的用户名和 IP 地址或域名。如果需要输入密码,则可以加上 -p
参数:
./add_key.sh user host -p password
使用 Bash 脚本将公钥添加到 Linux 主机中的 authorized_keys
文件中,可以方便地实现无密码登录,提高工作效率。