SSH远程管理服务实战

SSH远程管理服务实战

1.SSH基本概述

SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢?

1.提供远程连接服务器的服务

2.对传输的数据进行加密

SSH协议能提供远程连接服务,Telnet也能提供远程连接服务, 那么分别的区别是什么呢?

ssh服务会对传输数据进行加密, 监听在本地22/tcp端口, ssh服务默认支持root用户登录

telnet服务不对数据进行加密, 监听在本地23/tcp端口, Telnet默认不支持root用户登录

SSH主要用来连接服务器
Telnet主要用来连接网络设备
服务连接方式 服务数据传输 服务监听端口 服务登陆用户
ssh 加密 22/tcp 默认支持root用户登陆
telnet 明文 23/tcp 不支持root用户登陆

ftp dns ssh telnet mysql http https
tcp/20 tcp/53 tcp/22 tcp/23 tcp/3306 tcp/80 tcp/443
tcp/21 udp/53

2.SSH相关命令

SSH有客户端与服务端,我们将这种模式称为C/S架构,ssh客户端支持Windows、Linux、Mac等平台。在ssh客户端中包含 ssh|slogin远程登陆、scp远程拷贝、sftp文件传输、ssh-copy-id秘钥分发等应用程序。

1.ssh远程登录服务器命令示例

ssh -p22 root@10.0.0.61

# -p指定连接远程主机端口,默认22端口可省略
# root@remotehost
# "@"前面为用户名,如果用当前用户连接,可以不指定用户
# "@"后面为要连接的服务器的IP

2.scp复制数据至远程主机命令(全量复制)

要用scp 必须要知道对方主机密码

# -P 指定端口,默认22端口可不写
# -r 表示递归拷贝目录
# -p 表示在拷贝文件前后保持文件或目录属性不变
# -l 限制传输使用带宽(默认kb)

#推:将本地/tmp/oldboy推送至远端服务器10.0.0.61的/tmp目录,使用对端的root用户
[root@m01 ~]# scp -P22 -rp /tmp/oldboy oldboy@10.0.0.61:/tmp

#拉:将远程10.0.0.61服务器/tmp/oldboy文件拉取到本地/opt/目录下
[root@m01 ~]# scp -P22 -rp root@10.0.0.61:/tmp/oldboy /opt/

#限速
dd if=/dev/zero of=/opt/1.txt bs=1M count=500  #生成大文件

[root@m01 ~]# scp /opt/1.txt root@172.16.1.31:/tmp
root@172.16.1.31 password: 
test                        100%  656MB  '83.9MB/s'   00:07 
#限速为8096kb,换算为MB,要除以 8096/8=1024KB=1MB
[root@m01 ~]# scp -rp -l 8096  /opt/1.txt root@172.16.1.31:/tmp
root@172.16.1.31s password: 
test                        7%   48MB   '1.0MB/s'   09:45 

结论:
1.scp通过ssh协议加密方式进行文件或目录拷贝。
2.scp连接时的用户作为为拷贝文件或目录的权限。
3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低。

3.Sftp远程数据传输命令 (了解)

#默认可以通过sftp命令连接sftp服务
sftp root@10.0.0.61
sftp -oPort=52113 root@10.0.0.61  #sftp的特殊端口连接

# sftp使用get下载文件至于本地服务器
sftp> get conf.txt /tmp/

# sftp使用put上传本地服务器文件至远程服务器
sftp> put /root/t1.txt /root/
rz 和sftp
rz 拷贝文件效率高,不支持超过4个G以上的文件,不支持断点续传
sftp  远程传输,特别适合拷贝大文件。

ssh提供的客户端命令:
	ssh   远程连接    (非常重要)
	scp   远程拷贝    (非常重要)   和  rsync的远程传输方式一模一样   
		1.scp通过ssh协议加密方式进行文件或目录拷贝。
		2.scp连接时的用户作为为拷贝文件或目录的权限。
		3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低。
	sftp  远程传输     (一般般)   Xftp (还可以)

3.SSH验证方式

1.基于账户密码远程登录

知道服务器的IP端口,账号密码,即可通过ssh客户端命令登陆远程主机。

➜  ~ ssh -p22 root@10.0.0.61
root@10.0.0.61 password:
[root@m01 ~]#

太简单容易被破解
太复杂容易被忘记

2.基于秘钥远程登录

默认情况下,通过ssh客户端命令登陆远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式。

15446039940513.jpg

1.在服务器上生成非对称密钥,使用-t指定密钥类型, 使用-C指定用户邮箱

[root@m01 ~]# ssh-keygen -t rsa -C 912418275@qq.com
...
#默认一路回车即可
...

[root@msy ~]# ll /root/.ssh
total 8
-rw------- 1 root root 1675 Sep  9 17:21 id_rsa
-rw-r--r-- 1 root root  398 Sep  9 17:21 id_rsa.pub
[root@msy ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLUl5QzQOAGPVQVlVJnhtrrkXwq3qSYk6JUjmDaqx/v6COV1/tYeZvCfrBot/I6fz94slxOUX/YnkQ2w5k2GxxTnrQmMOX9/hZ5/iNJWzJHFH9nXEZWUqBW5lBKastdUi79OhYsMn6+6k2Y87NW3e/eh9MkAEf7K3eqWKXw276C3yhH3nDnMN9e9Uv7vGHuYzgth1ORuLSP11OCTpSDT9kTdDC+29Kl6zMdhqZ5I0Na5rNKueTj8PzHbYIrANogKZ+aWW1BsrK4uSheUECDWwihMwzk0RZ5Jb+dMKCkOFJUc+YrwfqkpGkaPSV+/YkL2gdY9txSh2qUkkN67PCL2V1 912418275@qq.com

2.将A服务器上的公钥推送至B服务器

[root@msy ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31

#命令示例: ssh-copy-id [-i [identity_file]] [user@]machine
ssh-copy-id #命令
-i          #指定下发公钥的路径
[user@]     #以什么用户身份进行公钥分发(root),如果不输入,表示以当前系统用户身份分发公钥
machine     #下发公钥至那台服务器, 填写远程主机IP地址

#分发秘钥,[将A服务器的公钥写入B服务器~/.ssh/authorized_keys文件中]
[root@msy ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31

3.A服务器连接B服务器是无需密码的,如果能直接连接无需密码则表示秘钥已配置成功

#远程登录对端主机方式
[root@m01 ~]# ssh root@172.16.1.31
[root@nfs ~]#

[root@msy ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.
ECDSA key fingerprint is SHA256:z8274MhoZ5JM+3H8wDi1QZ8VrerNI6aqRNhsl4vPLw0.
ECDSA key fingerprint is MD5:df:55:36:f8:01:46:f0:d6:f4:00:29:bd:b1:e6:f5:68.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.1.31's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.16.1.31'"
and check to make sure that only the key(s) you wanted were added.

[root@msy ~]# ssh 'root@172.16.1.31'    不需要密码
Last failed login: Mon Sep  9 17:28:12 CST 2019 from 172.16.1.41 on ssh:notty
There were 9 failed login attempts since the last successful login.
Last login: Mon Sep  9 15:31:28 2019 from 10.0.0.1
[root@nfs ~]#     就过来了

#不登陆远程主机bash,但可在对端主机执行命令
[root@m01 ~]# ssh root@172.16.1.41 "hostname -i"
172.16.1.41

4.SSH场景实践

实践场景,用户通过Windows/MAC/Linux客户端连接跳板机免密码登录,跳板机连接后端无外网的Linux主机实现免密登录,架构图如下。实践多用户登陆一台服务器无密码实践单用户登陆多台服务器免密码
15448553238148.jpg

1.windows客户端使用Xshell生成秘钥对,并下发公钥至跳板机

1) Xshell-->选择工具->新建密钥生成工具
15449514274501.jpg
2) 生成公钥对,选择下一步
3) 填写秘钥名称。秘钥增加密码则不建议配置
15449515507524.jpg
4) Windows会提示密码,继续即可
15449516151437.jpg
5) 生成秘钥后,点击Xshell->工具->用户秘钥管理者->选择对应秘钥的属性
15449516214299.jpg
6) 选择对应秘钥的公钥,将其复制
15449516293770.jpg
7) 将从WIndows下复制好的公钥粘贴至跳板机指定的目录中,然后测试

'指定的目录?
[root@msy ~]# vim /etc/ssh/sshd_config 
            /keys                               #搜索keys    
'找到目录
[root@msy ~]# ls /.ssh
ls: cannot access /.ssh: No such file or directory
'没有目录
创建这个目录
[root@msy ~]# vim authorized_keys
'把密钥复制进去

[root@msy ~]# ls .ssh/
id_rsa  id_rsa.pub  known_hosts
'登录不上的原因是因为你把目录创建在家目录下 没有创建在.ssh下
[root@msy ~]# ls
anaconda-ks.cfg  authorized_keys  hostname_ip.sh
[root@msy ~]# mv authorized_keys .ssh/
[root@m01 ~]# cd ; umask 077; mkdir -p .ssh ;cd .ssh
[root@m01 .ssh]# vim authorized_keys  #添加windows公钥

2.跳板机下发公钥至后端主机

1) 在跳板机上生成秘钥对

[root@m01 ~]# ssh-keygen -t rsa -C 91248275@qq.com

2) 拷贝跳板机上的密钥至后端主机,如果SSH不是使用默认22端口, 使用-p指定对应端口

[root@m01 ~]# ssh-copy-id  -i /root/.ssh/id_rsa.pub "-p22 root@172.16.1.31"
[root@m01 ~]# ssh-copy-id  -i /root/.ssh/id_rsa.pub "-p22 root@172.16.1.41"

3) 在m01管理机上测试是否成功登陆两台服务器

[root@m01 ~]# ssh root@172.16.1.41
[root@nfs01 ~]# exit

[root@m01 ~]# ssh root@1172.16.1.31
[root@backup ~]# exit

3.通过跳板机能实现scp拷贝文件免密码

[root@manager ~]# scp manager-web root@172.16.1.31:/tmp
manager-web                 100%    0     0.0KB/s   00:00    
[root@manager ~]# scp manager-web root@172.16.1.41:/tmp
manager-web                 100%    0     0.0KB/s   00:00  

5.SSH安全优化

SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。

1.更改远程连接登陆的端口

2.禁止ROOT管理员直接登录

3.密码认证方式改为密钥认证

4.重要服务不使用公网IP地址

5.使用防火墙限制来源IP地址

SSH服务登录防护需进行如下配置调整,先对如下参数进行了解

Port 6666                       # 变更SSH服务远程连接端口
禁止外网ip连接,只监听本地内网ip     #配合1使用,比较有用,只更改端口没啥用
ListenAddress 172.16.1.31      只172 网段登录

PermitRootLogin(谨慎)    no      # 禁止root用户直接远程登录    禁用了登录不上 密钥也不行
PasswordAuthentication  no      # 禁止使用密码直接远程登录
UseDNS                  no      # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication    no      # 禁止GSS认证,减少连接时产生的延迟

将如下具体配置添加至/etc/ssh/sshd_config文件中,参数需根据实际情况进行调整

vim /etc/ssh/sshd_config
'输入在原有的上面
'最底下输入不生效
'尽量注释  不删除
'端口号改变 生效后不会立马断开连接 但是断开后连接就会失败了
ssh 10.0.0.31 6666 #这样连接就可以

###SSH###
#Port 6666
#PasswordAuthentication no
#PermitRootLogin no
GSSAPIAuthentication no
UseDNS no
###END###

测试

[root@msy ~]# vim /etc/ssh/sshd_config      试第一个Port 6666  后面的先注释
[root@msy ~]# systemctl restart sshd        重启
[root@msy ~]# netstat -lntp                 没有22端口 只有6666端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:6666            0.0.0.0:*               LISTEN      16794/sshd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1306/master         
tcp6       0      0 :::6666                 :::*                    LISTEN      16794/sshd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1306/master         

[root@msy ~]# ssh 10.0.0.31 6666            连接连不上,但是可以这么连接
[root@msy ~]# vim /etc/ssh/sshd_config      试第二个PermitRootLogin no  后面的先注释
'不管是密码还是密钥登录都被拒绝 是不可能连接成功的
[root@msy ~]# systemctl restart sshd        重启

[g:\~]$ ssh oldboy@10.0.0.31          #普通用户登录
[oldboy@nfs ~]$ su - root             #su授权
Password: 
[root@nfs ~]#                         #回来了
[root@msy ~]# vim /etc/ssh/sshd_config      试第二、三个都关掉  其他先注释
[root@msy ~]# systemctl restart sshd        重启
'密钥也登不上

[root@nfs ~]# su - oldboy
Last login: Mon Sep  9 19:50:51 CST 2019 from 10.0.0.1 on pts/1
[oldboy@nfs ~]$ mkdir .ssh
[oldboy@nfs ~]$ ll -d
drwx------ 4 oldboy oldboy 111 Sep  9 20:00 .
[oldboy@nfs ~]$ ll -d .ssh/
drwxrwxr-x 2 oldboy oldboy 6 Sep  9 20:00 .ssh/
[oldboy@nfs ~]$ chmod 700 .ssh/                        #给他700的权限
[oldboy@nfs ~]$ ll -d .ssh/
drwx------ 2 oldboy oldboy 6 Sep  9 20:00 .ssh/
[oldboy@nfs ~]$ cd .ssh/
[oldboy@nfs ~/.ssh]$ vim authorized_keys               #把密钥复制进去
[oldboy@nfs ~/.ssh]$ chmod 600 authorized_keys         #给目录600权限

'另一个就可以用密钥登陆了
[oldboy@nfs ~]$ su - root
Password: 
Last login: Mon Sep  9 19:53:01 CST 2019 on pts/1
[root@nfs ~]# vim /etc/ssh/sshd_config 
[root@nfs ~]# 
'记得改回来

总结

#ssh服务
	telnet和ssh协议之间区别
	ssh客户端
		ssh		远程连接
		scp		远程拷贝
		sftp	远程传输
	
#ssh登录方式
		用户密码
		密钥方式
			ssh-keygen    生成密钥对命令
			ssh-copy-id   推送公钥的脚本
		
		用户--公网-->跳板机的ssh服务--内网-->连接后端服务器
		Windows生成密钥
		Linux生成密钥
		MAC 和 linux 一样   
#ssh安全
		防止别人攻击,或者暴力破解
		修改服务器连接端口
		禁止root直接远程登录
		禁止直接使用密码认证
		--------------------------重要的服务部使用公网IP

fail2ban 工具
fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。
1.开启Firewalld防火墙
[root@bgx ~]# systemctl start firewalld
[root@bgx ~]# systemctl enable firewalld
[root@bgx ~]# firewall-cmd --state
running

2.修改firewalld规则,启用Firewalld后会禁止一些服务的传输,但默认会放行常用的22端口, 如果想添加更多,以下是放行SSH端口(22)示例,供参考:
#放行SSHD服务端口
[root@bgx ~]# firewall-cmd --permanent --add-service=ssh --add-service=http 
#重载配置
[root@bgx ~]# firewall-cmd --reload
#查看已放行端口
[root@bgx ~]# firewall-cmd  --list-service

3.安装fail2ban,需要有epel
[root@bgx ~]# yum install fail2ban fail2ban-firewalld mailx -y

4.配置fail2ban规则.local会覆盖.conf文件
[root@bgx fail2ban]# cat /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]
enabled = true
filter  = sshd
port    = 22
action = %(action_mwl)s
logpath = /var/log/secure

5.启动服务,并检查状态
[root@bgx ~]# systemctl start fail2ban.service
[root@bgx ~]# fail2ban-client status sshd

6.清除被封掉的IP地址
[root@bgx ~]# fail2ban-client set sshd unbanip 10.0.0.1

总结

第一章:生成密钥对
1.生成命令
[root@m01 ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:foZFV1hmfV7lq8Uxw/jtrhmSGO0TQMEjDiRdnfT0HQw root@m01
The key's randomart image is:
+---[RSA 2048]----+
|    .o...++o.EBoo|
|     .o ..=o.=o+=|
|       o .o.o..*=|
|        .. +  o B|
|        S o o  =.|
|       . o + oo. |
|        o + =.. .|
|         o   o + |
|              o..|
+----[SHA256]-----+


2.查看密钥对信息
[root@m01 ~/.ssh]# ll
total 8
-rw-------. 1 root root 1675 Sep 16 08:50 id_rsa
-rw-r--r--. 1 root root  390 Sep 16 08:50 id_rsa.pub

注意:
id_rsa 	   私钥		权限是:600	
id_rsa.pub 公钥		权限是:644 


[root@m01 ~]# ssh-keygen 
Generating public/private rsa key pair.

第一个交互
Enter file in which to save the key (/root/.ssh/id_rsa): 
解决:
-f /root/.ssh/id_rsa

第二个交互:
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
解决:
-N ''

创建密钥对最终免交互命令:
ssh-keygen -f /root/.ssh/id_rsa -N ''

第二章:分发秘钥
[root@m01 ~]# ssh-copy-id 10.0.0.31
第一个交互:
Are you sure you want to continue connecting (yes/no)? yes
解决:
-o StrictHostKeyChecking=no

第二个交互: 
root@10.0.0.31's password: 
解决: 
sshpass -p 123456 ssh-copy-id -o StrictHostKeyChecking=no 10.0.0.31

第三章: 安全认证
1.修改端口
2.禁止外网IP连接,只监听本地内网IP
3.禁止密码登录,只允许秘钥登录

修改ssh配置文件:
Port 9999 
ListenAddress 172.16.1.31
PubkeyAuthentication yes
PasswordAuthentication no 

经验:
修改SSH的时候,提前打开一个窗口以防把自己关在外面

第四章:完成批量分发的作业
超级作业:
一个脚本完成以下所有任务:
1.管理机自动创建密钥对
2.管理机自动将公钥发送到被管理机
3.修改被管理机的SSH连接端口为9999			
4.修改被管理机的SSH监听地址为172.16.1.X		
5.修改被管理机不允许使用账号密码方式登陆,只允许使用密钥方式连接	
6.修改完之后验证是否生效,验证方法为使用9999端口连接被管理机并打印出主机信息	

实现思路: 
先写需求的shell命令
修改之前先备份配置

第一步:任务拆解
1.管理机自动创建密钥对
ssh-keygen -f /root/.ssh/id_rsa -N ''

2.管理机自动将公钥发送到被管理机
sshpass -p 123456 ssh-copy-id -o StrictHostKeyChecking=no 10.0.0.31

3.修改被管理机的SSH连接端口为9999	
测试:
sed -n 's@#Port 22@Port 9999@gp' /etc/ssh/sshd_config
实际:
sed -i 's@#Port 22@Port 9999@g' /etc/ssh/sshd_config

4.修改被管理机的SSH监听地址为172.16.1.X	
测试命令:
[root@m01 ~]# sed -n 's@#ListenAddress 0.0.0.0@ListenAddress 172.16.1.41@gp' /etc/ssh/sshd_config 
ListenAddress 172.16.1.41
[root@m01 ~]# sed -n '/0.0.0.0/c ListenAddress 172.16.1.41' /etc/ssh/sshd_config 
ListenAddress 172.16.1.41	
实际:
sed -i '/0.0.0.0/c ListenAddress 172.16.1.41' /etc/ssh/sshd_config
	
5.修改被管理机不允许使用账号密码方式登陆,只允许使用密钥方式连接
测试命令:	
sed -n '/PubkeyAuthentication/s@#@@g' /etc/ssh/sshd_config 
实际:
sed -i '/PubkeyAuthentication/s@#@@g' /etc/ssh/sshd_config
sed -i '/PasswordAuthentication/s@yes@no@g' /etc/ssh/sshd_config

6.修改完之后验证是否生效,验证方法为使用9999端口连接被管理机并打印出主机信息
ssh IP systemctl restart sshd 
ssh IP -p 9999 hostname

第二步:写进脚本里
[root@m01 ~]# cat fenfa.sh 
#!/bin/bash 

#1.create key 
ssh-keygen -f /root/.ssh/id_rsa -N ''

#2.copy key 
sshpass -p 123456 ssh-copy-id -o StrictHostKeyChecking=no 172.16.1.31 

#3.change ssh
ssh 172.16.1.31 "sed -i 's@#Port 22@Port 9999@g' /etc/ssh/sshd_config"
ssh 172.16.1.31 "sed -i '/0.0.0.0/c ListenAddress 172.16.1.31' /etc/ssh/sshd_config"
ssh 172.16.1.31 "sed -i '/PubkeyAuthentication/s@#@@g' /etc/ssh/sshd_config"
ssh 172.16.1.31 "sed -i '/PasswordAuthentication/s@yes@no@g' /etc/ssh/sshd_config"

#4.check 
ssh 172.16.1.31 systemctl restart sshd 
ssh 172.16.1.31 -p 9999 hostname


第三步:优化脚本,添加批量部署
#!/bin/bash 

if [ -f /root/.ssh/id_rsa ];then
   echo "----------密钥对已经存在---------------"
else
   echo "----------正在生成密钥对---------------"
   ssh-keygen -f /root/.ssh/id_rsa -N '' > /dev/null 2>&1
fi

for i in {31,41}
do
    echo "正在操作:172.16.1.${i}"
    echo "----------正在分发--------"
    sshpass -p123456 ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.1.${i} -o StrictHostKeyChecking=no > /tmp/ssh.log 2>&1
    echo "----------正在备份SSH配置-----"
    ssh 172.16.1.${i} "\cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak"
    echo "----------正在优化SSH配置----"
    ssh 172.16.1.${i} "sed -i 's@#Port 22@Port 9999@g' /etc/ssh/sshd_config"
    ssh 172.16.1.${i} "sed -i 's@#ListenAddress 0.0.0.0@ListenAddress 172.16.1.${i}@g' /etc/ssh/sshd_config"
    ssh 172.16.1.${i} "sed -i 's@^PasswordAuthentication yes@PasswordAuthentication no@g' /etc/ssh/sshd_config"
    ssh 172.16.1.${i} "systemctl restart sshd"
    sleep 2 
    echo "----------测试优化后的连接"
    ssh 172.16.1.${i} -p 9999 hostname
done

创建的密钥对在哪里?

[root@linux-node1 ~]#ls -la .ssh/
-rw-------   1 root root 1675 9月  16 16:58 id_rsa
-rw-r--r--   1 root root  411 9月  16 16:58 id_rsa.pub
-rw-r--r--   1 root root  348 9月  15 10:31 known_hosts

哪个是锁,哪个是钥匙?

id_rsa.pub  是锁
id_rsa      是钥匙

扔给服务器的是锁

钥匙留在自己身上

如何把锁扔给服务器?

ssh-copy-id 192.168.56.12 

连接服务器的记录保存在哪里?

保存在: .ssh/known_hosts

[root@linux-node1 ~]# cat .ssh/known_hosts       
192.168.56.12 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL4qFTRF3HV7Wiy7J/cPCYlQmiircxUuxOuPYhDFaHs/3FdH2MVGLCpB27c62NOwb3H0fNP9Mw/KS8U4LbDKsRI=

扔过去的锁保存在服务器的什么地方呢?

保存在服务器的: .ssh/authorized_keys

[root@linux-node2 ~]# cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDccq56aCnkEILBbVFWR2Fbyn5E0BL7qH2d4BoFV0boU64Hn6YlaraBFt50DJcg3ldh8x3HgSbONM132GxcZj28gUBKOKOIpO7wRH2ELDAKZUFgbW2un9D8Aah4WmcWJbYHvUgllJbtg2XWmjqX96fr89y7TpxKOTmPaFEebGcPScHawDJ749ISR0Jo4E07h6AkkCE9BYSkHA+QCmo3IBQ+wH0FKpXmOvEzXlpl7RT0RO6RY4KYBwmZm59csk3IlapUVORxEqKLw20NA8grRs3kkpcqETPb00qm5xsmazGDPK44Vtu7HTQp0Jqstpc5s71IL2Snd4mwuATlKhWXN7m7 root@linux-node1.linuxhot.com
posted @ 2020-01-02 20:39  干瘪的柠檬  阅读(755)  评论(0编辑  收藏  举报