一、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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐