一、原理:
使用SSH连接Centos时,我们可以创建一个公钥和一个私钥,公钥放在服务端,私钥放在客户端,当客户端去连接服务端时,会先去查找密钥,
要是客户端的私钥可以和服务端的公钥匹配,我们就可以免密码登录,要是无法匹配,就需要我们去输入密码
二、实现步骤:
1、先配置ssh
打开SSH的配置文件 ( /etc/ssh/sshd_config),找到以下内容,并去掉注释:
RSAAuthentication yes # 打开RSA认证
PubkeyAuthentication yes # 打开密钥认证
AuthorizedKeysFile .ssh/authorized_keys # 公钥
配置好之后重启ssh服务:/sbin/service sshd restart
2、生成公钥和私钥:
ssh-keygen -t rsa ( -t 指定生成的密钥为 rsa认证),一路回车就可以了,会在 /root/.ssh/目录下生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
3、修改 id_rsa.pub 的名称:
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
4、将私钥拷贝到客户端:
如果客户端是Linux系统,直接将文件放在 /root/.ssh/ 目录下就可以,这里我用的是Windows,然后我们需要用 Xshell 去连接服务器,
打开Xshell,新建连接, 在 主机 那里输入你服务器的 IP 地址,然后点击用身份验证,在方法那里选择 Public Key,用户名 那里输入服务器给你提供的
账户,然后点击浏览,点导入,找到你从服务器上拷贝下来的私钥,点打开,然后点确定 -> 确定 -> 连接就可以连接上了
三、scp 拷贝文件
1、将一个文件/目录从远程机器 scp 到本地机器
# 在 xshell 中,使用如下命令:
[root@Demon ~]# scp /home/demon/id_rsa Demon@192.168.1.57:/D:/
2、将一个文件/目录从本地机器 scp 到远程机器
[root@Demon ~]# scp Demon@192.168.1.57:/D:/1.txt /home/demon
四、写一个脚本,从一个文本文件中读取 IP 列表(每行一个 IP),并 SSH 登录这些 IP 所在的机器,将 /var/log/message 文件清空
#!/bin/bash
#Filename:test.sh
while read line;
do
upt="ssh -nt -t root@$line rm -f /var/log/message";
$upt;
done < test_ip.txt