一、1、远程连接服务器 (需要密码) 2、远程复制 (需要密码)
1、远程连接服务器:准备条件:提前准备2台虚拟机,server(ip为192.168.71.140),client(ip为192.168.71.141)
客户端:cd ~ à ssh root@192.168.71.140 此为服务端ip à
yes (首次登陆询问,以后不询问) à 输入密码000000 即连接成功
exit 断开与服务端连接
ls -a 查看所有文件(因为.ssh目录就属于隐藏目录)
cd .ssh/
ls 查到里边包含一个known_hosts的文件,(此文件就是初次登录远程服务器或服务端时,远程服务器询问yes/no时保存下来的记录文件,正常第二次登录不会再询问,但用>清空后,第二次登陆仍会询问)
2、远程复制 (需要密码)
server(ip为192.168.71.140);client(ip为192.168.71.141)
客户端:scp全量同步命令,先which scp查看是否安装
yum provides *bin/scp 安装scp命令所需软件包
操作:mkdir -p aaa/bbb/ 创建一个测试目录aaa
scp -r aaa root@192.168.71.140:/root/ 递归复制源路径到目标路径
输入密码,回车 即复制完毕
服务端:①cd ~ 转到家目录下②ls 发现aaa目录已被复制到此,成功
客户端:exit 断开与服务端连接
提示:远程连接和远程复制均需输密码所以安全性低,所以要设法免密码登录
二、1、免密远程登录(需要用到即密钥对) 2、免密远程复制
1、免密远程登录
密钥对:分为锁头文件(公钥,服务端)和钥匙文件(私钥,客户端),即用钥匙文件(私钥,客户端)发起连接找锁头文件(公钥,服务端),客户端用复杂算法加密
客户端:cd ~/.ssh/ 进入家目录下/root/.ssh/ 目录
ssh再按2下Tab键,可看到一个ssh-keygen命令
ssh-keygen 执行密钥指令
Enter file in which to save the key (/root/.ssh/id_rsa):回车 此目录为密钥保存位置
Enter passphrase (empty for no passphrase):回车 询问是否需要再建密码,回车即不用
Enter same passphrase again: 回车 让再输一遍上一行密码,回车则不用;此时会在/root/.ssh/下生成一个2048位的密钥对
ls 查到新增了2个密码文件id_rsa私钥 和 id_rsa.pub公钥
scp id_rsa.pub root@192.168.71.140:~ 将公钥复制到服务端家目录下
输入服务端密码000000 即执行完毕
服务端:①cd ~ 转到家目录下②ls 发现id_rsa.pub目录已被复制过来
mkdir .ssh 创建隐藏目录.ssh
chmod 700 .ssh
ll -d .ssh
mv id_rsa.pub .ssh/
cd .ssh/
ls 发现公钥已被复制过来,但服务器端并不能识别这个文件名,所以要改成服务器端能识别的文件名,这个文件名存在于/etc/ssh/sshd.config这个文件中
cd /etc/ssh/
ls 发现有个sshd.config文件存在
vim sshd.config
:set nu 带行号显示,查到第49行后边的文件名为authorized_keys,就是这个
cd ~/.ssh
mv id_rsa.pub authorized_keys 把公钥文件名改为这个服务器能识别的这个名字。
ls 查到公钥文件名已改为authorized_keys
测试1:免密登录
客户端:
ssh 192.168.71.140 此时登录发现不再用输入密码,即已实现免密登录
hostname -I 查到ip为140,即服务端ip,证明登陆服务端成功
exit 退出服务端登录
hostname -I 查到ip为141,即客户端ip,证明登陆服务端成功
2、测试2:免密远程复制
客户端:mkdir -p ./qqq/www
scp -r qqq 192.168.71.140:~
服务端:ls 查到qqq目录已被复制过来,即免密远程复制成功
三、ssh-copy-id 自动分发密钥对命令 更便捷实现免密远程登录/远程复制
服务端:①cd ~ ②rm -rf .ssh 删掉公钥所在的.ssh文件
客户端:ssh 192.168.71.140 发现仍需输密码,要寻求更简单的免密方法
1、自动分发密钥对给超户
客户端:①cd ~ à ssh加2下Tab,查到ssh-copy-id自动分发密钥对命令
②ssh-keygen à 回车 à yes à 回车 à 回车 ,即产生新的密钥对
③ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.71.140 ,输入服务端密码000000,即自动分发公钥到指定主机名的家目录下,-i指定密钥位置
测试1:免密远程登录:④ssh 192.168.71.140 发现可免密登录到服务端
⑤hostname -I 查到ip为140即服务端ip
⑥exit退出登录服务端 ,完毕
测试2:免密远程复制:
客户端:mkdir ccc à scp -r ccc 192.168.71.140:~
服务端:ls 查到ccc目录已被复制到服务端,完毕。
2、自动分发密钥对给普户(已省略三、1、客户端第①②③步)
服务端:useradd yjs à passwd yjs à 输入密码0二次,显示创建完毕
客户端:ssh-copy-id -i ~/.ssh/id_rsa.pub yjs@192.168.71.140
输入服务端密码0,即自动分发公钥到指定主机名的家目录下,-i指定密钥位置
ssh 192.168.71.140 发现可免密登录到服务端
hostname -I 查到ip为140即服务端ip,即免密登录成功
exit 退出登录服务端,完毕
四、批量分发密钥对(适用于工作中大批量实现分发密钥对和免密登录)
可先写入脚本中,即一步到位,免交互的方式去实现,
客户端:ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ""
(提示:-t 指定加密算法,搭配dsa或rsa使用;-f 指定存放密钥路径
-P "" 此为大P,指定密码,""为空,-P ""即不设置密码)
yes 并回车 即覆盖之前创造的密钥对(之前没创建过密钥对则不提示)
cd .ssh à ls 发现密钥对公钥和私钥已被创建
远程登录时会遇到2种交互(卡住)情况:①首次登录询问yes/no②要求输入服务端密码;写入脚本时要求执行时一次都不能卡,脚本中应先先rm -rf ~/.ssh/* 清空之前的密钥对文件,然后再创建批量密钥对
[客户端]要做到远程登录时免询问,有2种方法:
方法一:vim /etc/ssh/ssh_config 找到# StrictHostKeyChecking ask 询问是否检查,改为StrictHostKeyChecking no 即不检查 保存退出
service sshd restart 重启ssh
ssh 192.168.71.140 即可免询问登录,但仍需输入密码
方法二:ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 192.168.71.140" 即可免询问,参数-o 临时生效
ssh 192.168.71.140 即可免询问登录,但仍需输入密码
批量分发密钥对后,会在~/.ssh下生成known_hosts文件,保存公钥和私钥
[客户端]要做到远程登录时时免密码,要用ssh-pass命令,未安装需云yum仓库安装
Yum安装ssh-pass步骤:
which wget
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://files.tttidc.com/centos6/epel-6.repo
mv epel-6.repo /etc/yum.repos.d/
ls /etc/yum.repos.d/ 显示epel-6.repo证明下载成功
yum -y clean all
yum makecache
yum -y install sshpass 装ssh-pass,注意安装包叫sshpass
which ssh-pass 显示ssh-pass已安装则正常
sshpass -p "000000" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 192.168.71.140" 对服务端超户一键免询问免密批量分发密钥对(超户登陆密码为000000)
ssh 192.168.71.140 即可免询问免密登录服务端,exit退出登录
sshpass -p "0" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no yjs@192.168.71.140" 对服务端普户yjs一键免询问免密批量分发密钥对(超户登陆密码为0)
ssh 192.168.71.140 即可免询问免密登录服务端,exit退出登录
通过脚本实现密钥对的批量分发
跳过yes 和 no 两种方法
(1)修改vi /etc/ssh/ssh_config配置文件里 StrictHostKeyChecking no,重启服务生效
(2)带参数-o临时生效,即临时免询问
ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 192.168.71.140
跳过密钥登陆:安装ssh-pass
更多推荐