`

配置SSH使用无密码公钥认证的方式

阅读更多

以本文中的三台机器为例,现在dbrg-1是主节点,它需要主动发起SSH连接到dbrg-2 和dbrg-3,对于SSH服务来说,dbrg-1就是SSH客户端,而dbrg-2、dbrg-3则是SSH服务端,因此在dbrg-2,dbrg-3 上需要确定sshd服务已经启动。简单的说,在dbrg-1上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到dbrg-2,dbrg-3上,这 样,比如当dbrg-1向dbrg-2发起ssh连接的时候,dbrg-2上就会生成一个随机数并用dbrg-1的公钥对这个随机数进行加密,并发送给 dbrg-1;dbrg-1收到这个加密的数以后用私钥进行解密,并将解密后的数发送回dbrg-2,dbrg-2确认解密的数无误后就允许dbrg-1 进行连接了。这就完成了一次公钥认证过程。

对于本文中的三台机器,首先在dbrg-1上生成密钥对:
[dbrg@dbrg-1:~]$ssh-keygen -t rsa
这 个命令将为dbrg-1上的用户dbrg生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直 接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/dbrg/.ssh目录下。然后将 id_rsa.pub的内容复制到每个机器(也包括本机)的/home/dbrg/.ssh/authorized_keys文件中,如果机器上已经有 authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接cp 或者scp就好了,下面的操作假设各个机器上都没有authorized_keys文件。

对于dbrg-1
[dbrg@dbrg-1:.ssh]$cp id_rsa.pub authorized_keys

对于dbrg-2(dbrg-3同dbrg-2的方法)
[dbrg@dbrg-2:~]$mkdir .ssh
[dbrg@dbrg-1:.ssh]$scp authorized_keys dbrg-2:/home/dbrg/.ssh/
此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即dbrg-2机器上dbrg帐户的密码,当然,你也可以用其他方法将authorized_keys文件拷贝到其他机器上

[dbrg@dbrg-2:.ssh]$chmod 644 authorized_keys
这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。我就曾经在配置SSH的时候郁闷了好久。

[dbrg@dbrg-2:.ssh]ls -la
drwx------ 2 dbrg dbrg .
drwx------ 3 dbrg dbrg ..
-rw-r--r-- 1 dbrg dbrg authorized_keys
注意每个机器上的.ssh目录的ls -la都应该和上面是一样的

接着,在三台机器上都需要对sshd服务进行配置(其实是可以不用配置的,完成了上面的那些操作了以后SSH就已经可以工作了),在三台机器上修改文件/etc/ssh/sshd_config
#去除密码认证
PasswordAuthentication no
AuthorizedKeyFile .ssh/authorized_keys

至此各个机器上的SSH配置已经完成,可以测试一下了,比如dbrg-1向dbrg-2发起ssh连接
[dbrg@dbrg-1:~]$ssh dbrg-2
如果ssh配置好了,就会出现以下提示信息
The authenticity of host [dbrg-2] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。
然后你会发现不需要输入密码就可以建立ssh连接了,恭喜你,配置成功了
不过,别忘了测试本机ssh dbrg-1

分享到:
评论

相关推荐

    cussh:自动批量创建用户和配置SSH无密码登陆

    安装,则yum下载,如果安装过,则直接进行ssh文件拷贝,并执行公钥认证 4,执行cuser.sh脚本,并传入要建立用户的账号密码,就可以批量的在多个机器上建立用户了 5,然后拷贝root跟目下下的hosts文件和noroot.

    SSH的ssh-keygen命令基本用法详解

    ssh 公钥认证是ssh认证的方式之一。通过公钥认证可实现ssh免密码登陆,git的ssh方式也是通过公钥进行认证的。 在用户目录的home目录下,有一个.ssh的目录,和当前用户ssh配置认证相关的文件,几乎都在这个目录下。 ...

    高职组云计算与大数据题库

    5.检查 2 个节点是否可以通过无密钥相互访问,如果未配置,则进行 SSH 无密码公钥认证配置,将操作命令和返回结果以文本形式提交到答题框。 6.安装 2 个节点的 JDK 环境,其中 jdk-8u77-linux-x64.tar.gz 在 ...

    WindTerm2.5.0_x64_windows

    支持使用密码、公钥、键盘交互、gssapi-with-mic 的 SSH 自动登录。 支持 X11 转发。 支持直接/本地端口转发、反向/远程端口转发和动态端口转发。 支持 XModem、YModem 和 ZModem。 集成 sftp、scp 客户端,支持下载...

    putty使用密钥登陆OpenSSH配置方法(图文详解)

    在Windows管理Linux服务器时,常使用putty登陆ssh进行远程管理。默认登陆验证方式为密码认证,该方式虽然简单,但每次登陆都要输入一长串的密码,相当麻烦。而且,如果万一把root允许登陆打开,还有可能被强力破解,...

    sftpgo:功能齐全且高度可配置的SFTP服务器,具有可选的FTPS和WebDAV支持-S3,Google云存储,Azure Blob

    公钥和密码认证。 支持每个用户多个公共密钥。 SSH用户。 键盘交互式身份验证。 您可以轻松设置可自定义的多因素身份验证。 部分认证。 您可以配置多步身份验证,例如,在成功进行公钥身份验证之后,需要输入用户...

    功能齐全且高度可配置的SFTP服务器-Golang开发

    SFTPGo使用Go Features编写的功能齐全且可高度​​配置的SFTP服务器,每个帐户都被chroot到其主目录。...公钥和密码认证。 支持每个用户多个公共密钥。 SSH用户证书认证。 键盘交互式身份验证。 您可以轻松设置自定义

    Zhang21.github.io:利用GitHub + Hexo建个人博客

    利用Github :woman_and_man_holding_hands: Hexo制作个人博客 ...安装Git后做一个SSH无秘钥认证,把公钥放在GitHub上,避免每次推送代码需要输入账号密码; 生成秘钥之后把公钥写入GitHub SSH Keys中。 git

    test-github-actions

    公钥和密码认证。 支持每个用户多个公共密钥。 SSH用户。 键盘交互式身份验证。 您可以轻松设置可自定义的多因素身份验证。 部分认证。 您可以配置多步身份验证,例如,在成功进行公钥身份验证之后,需要输入...

    webvirtcloud:WebVirtCloud是面向管理员和用户的虚拟化Web界面

    用户可以在实例的根目录中添加SSH公钥(仅在Ubuntu下测试) 用户可以在实例中更改root密码(仅在Ubuntu上经过测试) 支持cloud-init数据源接口 警告!!! 如何在管理程序上更新gstfsd守护程序: wget -O - ...

    CuteFTP9简易汉化版

    SFTP配置Options-CuteFTP给你巨大的控制你SFTP会话,包括选择加密密码,MAC(消息身份验证代码)类型、压缩和身份验证*机制使用。 SFTP身份Files-Use身份文件提供的主机或创建自己的密钥对进行身份验证。在创建自己的...

    JAVA上百实例源码以及开源项目源代码

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    JAVA上百实例源码以及开源项目

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

Global site tag (gtag.js) - Google Analytics