SSH免密登录(内含批量配置脚本)
时间: 2023-09-07 09:12:53 浏览: 43
SSH免密登录可以让我们在多个服务器之间快速切换,提高工作效率。以下是实现SSH免密登录的步骤和批量配置脚本:
1. 在本地机器上生成公钥和私钥:
```
ssh-keygen -t rsa
```
2. 在目标服务器上创建`~/.ssh`目录和`authorized_keys`文件:
```
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
```
3. 将本地机器的公钥复制到目标服务器的`authorized_keys`文件中:
```
ssh-copy-id user@server
```
4. 完成以上步骤后,即可使用SSH免密登录目标服务器。
下面是批量配置脚本:
```
#!/bin/bash
# 定义目标服务器列表
servers=("server1" "server2" "server3")
# 定义用户名
user="username"
# 循环遍历目标服务器列表
for server in ${servers[@]}
do
# 生成公钥和私钥
ssh-keygen -t rsa
# 复制公钥到目标服务器
ssh-copy-id $user@$server
done
```
将服务器列表和用户名替换为实际的值,保存脚本并运行即可实现批量配置SSH免密登录。
相关问题
自动化配置SSH免密登录的Shell脚本
以下是一个自动化配置SSH免密登录的Shell脚本示例:
```bash
#!/bin/bash
# 远程服务器信息
remote_host="远程服务器IP地址"
remote_user="远程服务器用户名"
remote_password="远程服务器密码"
# 生成SSH密钥对
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
# 拷贝公钥到远程服务器
sshpass -p "$remote_password" ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host
# 配置本地SSH配置文件
cat << EOF >> ~/.ssh/config
Host $remote_host
User $remote_user
IdentityFile ~/.ssh/id_rsa
EOF
# 修改SSH配置文件权限
chmod 600 ~/.ssh/config
echo "SSH免密登录配置完成!"
```
此脚本使用了`ssh-keygen`命令生成SSH密钥对,然后使用`sshpass`命令将公钥拷贝到远程服务器,并修改本地SSH配置文件以配置免密登录。请注意,脚本中需要提供远程服务器的IP地址、用户名和密码。
使用此脚本时,请确保已经安装了`sshpass`工具,可以通过以下命令进行安装:
```bash
sudo apt-get install sshpass
```
运行脚本前,请确保将脚本保存为可执行文件并具有执行权限:
```bash
chmod +x script.sh
```
然后,运行脚本:
```bash
./script.sh
```
脚本将自动完成SSH免密登录的配置,并输出配置完成的提示信息。
验证SSH免密登录已经配置
要验证 SSH 免密登录是否已经配置成功,可以按照以下步骤进行:
1. 在本地机器上打开一个终端窗口,输入以下命令:
```
ssh user@remote_server
```
其中 `user` 是远程服务器的用户名,`remote_server` 是远程服务器的 IP 地址或者域名。如果 SSH 免密登录已经配置成功,将会直接登录到远程服务器上,而不需要输入密码。
2. 如果第一步中没有直接登录到远程服务器上,而是提示输入密码,说明 SSH 免密登录还没有配置成功,需要按照以下步骤进行配置:
- 在本地机器上生成 SSH 密钥对,可以使用以下命令:
```
ssh-keygen
```
按照提示输入密钥保存路径和密码等信息,生成 SSH 密钥对。
- 将本地机器上生成的公钥复制到远程服务器上,可以使用以下命令:
```
ssh-copy-id user@remote_server
```
其中 `user` 是远程服务器的用户名,`remote_server` 是远程服务器的 IP 地址或者域名。该命令会将本地机器上的公钥复制到远程服务器的 `authorized_keys` 文件中,从而实现 SSH 免密登录。
- 重新打开一个终端窗口,输入以下命令:
```
ssh user@remote_server
```
其中 `user` 是远程服务器的用户名,`remote_server` 是远程服务器的 IP 地址或者域名。如果 SSH 免密登录已经配置成功,将会直接登录到远程服务器上,而不需要输入密码。
总之,要验证 SSH 免密登录是否已经配置成功,可以尝试使用 `ssh` 命令登录远程服务器,如果可以直接登录到远程服务器而不需要输入密码,就说明 SSH 免密登录已经配置成功。