linux上配置ssh实现免密登录

linux上配置ssh实现免密登录

2018-7-16 作者: 张子阳 分类: Linux

当有多台服务器彼此进行通信时,可以通过使用ssh来免去输入密码的步骤。这篇文章将以两台服务器作为范例,演示如何通过ssh进行登录。

在未配置ssh之前,首先需要安装ssh:

yum install -y ssh

本机ssh登录

假设有两台主机,IP分别是:192.168.1.56 和 192.168.1.57,主机名分别叫做dev56和dev57。我们先配置dev56,使其可以登录自身(即从dev56登录dev56)。

先使用putty登录到dev56,再使用下面的命令尝试登录自己:

# ssh localhost

此时因为还没有进行配置,会发现系统要求输入密码,当输入和putty一样的密码时,可以登录成功。

putty几乎是windows上最常用的linux客户端了。

接下来,使用下面的命令,创建无密码的公钥:

# ssh-keygen -t rsa -P "" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): 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:/g4KmeerXa4rBfeccjlTthDWTeeNBv9ova8BuV9VmMM root@dev56 The key's randomart image is: +---[RSA 2048]----+ | . oo . | | o . .* = | | . . E o| | . . . o o =.| | o oS* .o o +| | oo.O . + o| | +..o+o . ...| | .= + o . o.| | .oB+..o o..| +----[SHA256]-----+

出现输入文件名的提示时,可以直接按回车不指定,系统会采用默认的名称。这样会在~/.ssh文件夹下生成两个文件,id_rsa(私钥)和id_rsa.pub(公钥)。继续执行下面命令:

# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

这条命令将会把ssh公钥加入到authorized_keys当中。这样,拥有ssh公钥的机器就可以实现免密登录了(当前就是本机)。再次使用ssh localhost进行登录:

# ssh localhost Last login: Mon Jul 16 14:58:21 2018 from ::1

此时,不再需要密码就可以成功登录了。

由其他服务器ssh登录本机

上一部分我们完成了自机的ssh登录,接下来就要完成从dev57 ssh登录到dev56。原理和上面是类似的:先生成dev57的公钥、私钥,然后将dev57的公钥,加入到dev56的authorized_keys当中。

在dev57上,再次执行下面命令生成密钥对:

# ssh-keygen -t rsa -P ""

在dev57上,使用cat输出一下公钥的内容:

# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDe0wRuoUJWDRsbdClOZQBdbhv4lY4iGU21+Ac552lwj/wBsP7gPNdZld/EVShIcglBJE4Mx9tycYXZpgDFLeenHQTaed5lw5TC+U0vEWvM/ulm76XXfewZh+phhTpg2LliL/Jx/gb5pOrD+YtWlmioJZxy9D1A3oXFE0J2wv9UEH9RvDrYDqI1WgYjvBLamWwFoM9TtSKD3Ia0F7gTYvXDTnDNX9zNXki3Gi9gYNGoveojScbMvY/yHOK/y2jfaIH/TpYWyPovGQSQijFWEYT6iCaZ5j7hLBGYFlwWAFc91so2nWynYPLOeAhe1jA4cydf7Nz8HsPXAS6ntKz8u8yz root@dev57

在dev56上(即要登录的机器,我们是从dev57登录dev56)上,将上面公钥的内容写入authorized_keys:

# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDe0wRuoUJWDRsbdClOZQBdbhv4lY4iGU21+Ac552lwj/wBsP7gPNdZld/EVShIcglBJE4Mx9tycYXZpgDFLeenHQTaed5lw5TC+U0vEWvM/ulm76XXfewZh+phhTpg2LliL/Jx/gb5pOrD+YtWlmioJZxy9D1A3oXFE0J2wv9UEH9RvDrYDqI1WgYjvBLamWwFoM9TtSKD3Ia0F7gTYvXDTnDNX9zNXki3Gi9gYNGoveojScbMvY/yHOK/y2jfaIH/TpYWyPovGQSQijFWEYT6iCaZ5j7hLBGYFlwWAFc91so2nWynYPLOeAhe1jA4cydf7Nz8HsPXAS6ntKz8u8yz root@dev57" >> ~/.ssh/authorized_keys

在dev57上,使用ssh登录到dev56:

[root@dev57 ~]# ssh 192.168.1.56 The authenticity of host '192.168.1.56 (192.168.1.56)' can't be established. ECDSA key fingerprint is SHA256:BUgYzVjm7DBkb581+vJDZViW92Mf5QwKvbV46m1BZfE. ECDSA key fingerprint is MD5:4a:69:a9:1d:19:cd:a1:15:1b:6e:26:4d:c1:82:33:48. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.56' (ECDSA) to the list of known hosts. Last login: Mon Jul 16 15:54:50 2018 from ::1 [root@dev56 ~]#

第一次登录时,会提示是否继续连接(和使用putty第一次连接主机时一样),输入yes,可以看到已经成功登录到了dev56了。输入exit,会重新退回到dev57。

[root@dev56 ~]# exit logout Connection to 192.168.1.56 closed. [root@dev57 ~]#

使用ssh-copy-id工具

上面的配置方法相对基础,有一个ssh-copy-id的工具,可以快速地实现上面的过程,将本机的公钥复制到远程主机的authorized_keys文件上。假设有三台主机:node0、node1、node2,如果想要从本机远程对它们进行登录,可以执行下面的命令,将本机的公钥拷贝过去:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@node0 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1 ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2

如果不是root用户,假如说用户名是hadoop,且端口号为22001,那么只要稍微修改一下语句就可以了:

ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@node0 ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@node1 ssh-copy-id -i $HOME/.ssh/id_rsa.pub -p 22001 hadoop@node2

至此,你应该已经了解如何配置ssh的免密登录了。配置好ssh还有一个作用就是可以方便地使用scp工具在不同的linux服务器间拷贝文件。

感谢阅读,希望这篇文章能给你带来帮助!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Brian

Emacs setup for Go Development

---- 概述 最近在我个人笔记本搭建Go开发环境,需要开发基于Go的一些业务模块,所以就把Go开发环境的配置记录下来。废话少说,直接上代码,嘿嘿! Emacs...

1.1K6
来自专栏编程之旅

Linux的用户管理(一)

在看《鸟哥的Linux私房菜》的第四章之前,我操作Linux系统时,习惯性的使用root账号,为什么呢?无非图一个方便,没有那么多权限设置,对当时我这个Linu...

2064
来自专栏FreeBuf

利用忘记密码功能绕过Windows auth ; BitLocker

为了降低用户使用计算时忘记登录密码而产生额外的损失,许多操作系统都为用户提供了一种根据提示信息来重置密码的功能。但这其实并不安全,大多数的密码重置机制的登录界面...

3175
来自专栏云计算教程系列

如何在服务器上安装OpenLDAP

轻量级目录访问协议(LDAP)是一种标准协议,旨在通过网络管理和访问分层目录信息。目录服务在开发内部网和与互联网程序共享用户、系统、网络、服务和应用的过程中占据...

3322
来自专栏北京马哥教育

Linux运维人员共用root帐户权限审计

一、应用场景 在中小型企业,公司不同运维人员基本都是以root 账户进行服务器的登陆管理,缺少了账户权限审计制度。不出问题还好,出了问题,就很难找出源头。 这里...

4807
来自专栏耕耘实录

SSH免密远程登录的配置与实现

操作系统:CentOS Linux release 7.4.1708 (Core)

1292
来自专栏码代码的陈同学

使用jasypt加密Spring Boot应用中的敏感配置

本文讲述了在Spring Boot/Spring Cloud应用中使用jasypt来加密properties。

3045
来自专栏Debian社区

Debian Linux下安装配置 Pure-ftpd

PureFTPd 是一款专注于程序健壮和软件安全的免费FTP服务器软件(基于BSD License)。其可以在多种类Unix操作系统中编译运行,包括Linux、...

1932
来自专栏tiane12

Mac OS X无法更改桌面背景解决方法

1682
来自专栏跟着阿笨一起玩NET

EntityFramework 连接数据库出错

本文转载:http://www.cnblogs.com/shuang121/archive/2012/03/19/2406121.html

1291

扫码关注云+社区

领取腾讯云代金券