第二十五节、SSH远程免密登录

SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。
从客户端来看,SSH提供两种级别的安全验证:
1、基于口令的验证
只要知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但缺点是:不能保证你正在连接的服务器就是你想连接的服务器。连接过程如下


SSH远程密码登录.png

当第一次链接远程主机时,会提示您当前主机的”公钥指纹”,询问您是否继续,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到~/.ssh/known_hosts文件中
2、基于密钥的验证
这种验证的前提是客户端需要生成一对密钥,将公钥放到需访问的远程服务器。这种验证比上一种的好处是,不能仿冒真正的服务器,因为要仿冒必须拿到客户端生成的公钥。缺点就是验证等待过程稍长些。


SSH远程免密登录.png

如何生成密钥:

  • 在客户端打开终端,执行ssh-keygen,该命令会默认在~/.ssh/目录下创建id_rsa、id_rsa.pub两个文件,分别为您的公钥和私钥
  • 将公钥id_rsa.pub文件拷贝到服务器端的~/.ssh/authorized_keys文件中,有三种方法:
  1. 通过scp拷贝,例:scp -P 22 ~/.ssh/id_rsa.pub user@host:~/authorized_keys #可选参数-P代表指定用端口号22
  2. 通过ssh-copyid程序,例:ssh-copy-id -i 绝对路径/file_name 目标主机IP #此种方式简单,不需追加改文件名,但不能指定端口号,默认以22端口而且需要输入密码
  3. 通过cat方法: 例:cat ~/.ssh/id_rsa.pub | ssh -p 22 user@host ‘cat >> ~/.ssh/authorized_keys’
    原理图如下:
    SSH远程密码登录原理.png

    图解,server A免登录到server B:
    1.在A上生成公钥私钥。
    2.将公钥拷贝给server B,要重命名成authorized_keys(从英文名就知道含义了)
    3.Server A向Server B发送一个连接请求。
    4.Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A。
    5.Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。
    总之:A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。
实际操作
#生成密钥对,t参数指定加密方式rsa,回车3次
[root@localhost ~]# ssh-keygen -t rsa 
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:
eb:38:2d:a0:9e:3d:93:95:a2:52:ec:eb:0b:60:65:44 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|  .E             |
|  .              |
|   o             |
|  o              |
|.o     .S        |
|o o o o  .       |
|.o o = ..        |
|..+o+ oo.        |
| +*o.o.o.        |
+-----------------+
#查看密钥存放的目录
[root@localhost ~]# ll /root/.ssh/
总用量 8
-rw------- 1 root root 1675 12月 19 15:16 id_rsa         # 私钥自留
-rw-r--r-- 1 root root  408 12月 19 15:16 id_rsa.pub   #公钥拷贝给目标主机
#传送公钥给目标主机需要输入密码
[root@localhost ~]# ssh-copy-id  -i /root/.ssh/id_rsa.pub  192.168.15.150
The authenticity of host '192.168.15.150 (192.168.15.150)' can't be established.
RSA key fingerprint is 76:72:55:b7:3f:e1:8b:6d:8d:d7:50:fb:d5:27:bb:c1.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.15.150' (RSA) to the list of known hosts.
Now try logging into the machine, with "ssh '192.168.15.150'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
#SSH免密设置成功,可以直接在本机获取远程主机的参数,ssh -l user_name  IP "command"
[root@localhost ~]# ssh -l root 192.168.15.150 "df -h"
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5        58G  3.7G   52G   7% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       194M   30M  155M  17% /boot
/dev/sda2        20G  5.7G   14G  31% /data
[root@localhost ~]# ssh -l root 192.168.15.150 "ifconfig"
eth0      Link encap:Ethernet  HWaddr 00:0C:29:BA:80:B0  
          inet addr:192.168.15.150  Bcast:192.168.15.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feba:80b0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:661 errors:0 dropped:0 overruns:0 frame:0
          TX packets:348 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:75506 (73.7 KiB)  TX bytes:54018 (52.7 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:840 (840.0 b)  TX bytes:840 (840.0 b)
服务主配置

服务主配置文件一般保存服务的主要参数,一般路径/etc/soft/soft.conf
普通配置文件一般是由主配置文件调用

[root@localhost ssh]# vim sshd_config
17 #Port 22                      #默认端口号
48 #PermitRootLogin yes  #允许超级管理员登录,取消注释改为no,root用户无法远程登录 
77 #PermitEmptyPasswords no  #允许空密码登录,no不允许
78 PasswordAuthentication yes  #允许通过密码登录
#重启ssh服务
[root@localhost ssh]# systemctl restart sshd

备注:特殊情况主机上保存了对方主机过期的公钥文件或者因为内网IP冲突,不同服务器使用同一个IP,导致前后公钥信息有差异无法发送公钥文件到目标主机
一般公钥信息都保存在文件/root/.ssh/known_hosts中,可以手动进文件删除相关信息或直接清空文件
但这可能会影响到其他主机的公钥文件
可以使用ssh-keygen来删除指定IP的公钥文件

ssh-key-gen -R 172.16.10.22
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet...
    StarShift阅读 2,416评论 0 7
  • SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group...
    shuff1e阅读 1,735评论 1 11
  • 1、远程连接服务器 远程连接服务器对于管理员来说,是一个很有用的操作。它使得对服务器的管理更为方便。不过方便归方便...
    Zhang21阅读 39,256评论 0 20
  • [TOC] ssh免密码登陆及其原理 1 示例 ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-k...
    小小少年Boy阅读 9,669评论 0 2