一、单向无密码访问
单向无密码访问远程服务器操作比较简单,比如服务器A需要无密码访问服务器B(A–>B),那么只需要在服务器A生成密钥对,将生成的公钥上传到服务器B的相关用户目录下的.ssh目录中(没有的话手动创建,注意,它的目录权限是700),并将公钥文件名称改为authorized_keys(注意,这个文件的权限应该是644),请注意.ssh目录及authorized_keys文件的权限,权限不符,会使配置无效。具体操作如下:
1、在需要无密码登录远程服务器的机器上(本例为服务器A)生成密码对:
在生成的过程中有几个选项让你输入密钥对的保存目录及输入私钥,直接enter就行了。
[root@mysqlcluster ~]# 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:
0e:4c:ec:e3:04:98:b0:71:00:91:75:57:ee:56:a1:82 root@mysqlcluster
执行上面一步,会在~/.ssh目录下生成两个文件id_rsa和id_rsa.pub, 其中id_rsa是私钥,保存在本机;id_rsa.pub是公钥,是要上传到远程服务器的。
2、上传公钥到需要无密码登陆的远程服务器B上并改名为authorized_keys:
远程服务器B上如果没有.ssh目录的话,先手动创建:
[root@www1bak ~]# mkdir .ssh
[root@www1bak ~]# chmod 755 .ssh
然后从服务器A上传公钥文件到远程服务器B:
[root@mysqlcluster ~]# scp .ssh/id_rsa.pub root@192.168.15.234:/root/.ssh/authorized_keys
The authenticity of host ’192.168.15.234 (192.168.15.234)’ can’t be established.
RSA key fingerprint is c9:ef:0c:1b:ac:6c:ef:84:a4:a7:e5:d1:20:58:c8:73.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ’192.168.15.234′ (RSA) to the list of known hosts. //这一步会将远程服务器B加入到本机(服务器A)的known_hosts列表中
root@192.168.15.234′s password:
id_rsa.pub 100% 399 0.4KB/s 00:00
3、测试
上传完公钥文件到远程后,马上从服务器A登陆到服务器B,如果没有输入密码登陆到了服务器B,表示成功,如果还要输入密码,则请检查远程服务器B上的.ssh目录权限是否为700,上传的远程服务器上的公钥名是否改为了authorized_keys,权限是否为644
二、多台服务器相互无密码访问
多台服务器相互无密码访问,与两台服务器单向无密码访问的原理是一样的,只不过由于是多台服务器之间相互无密码访问,不能象两台服务器无密码登录那样直接上传,步骤如下:
1、在每台服务器上都执行ssh-keygen -t rsa生成密钥对:
#ssh-keygen -t rsa
2、在每台服务器上生成密钥对后,将公钥复制到需要无密码登陆的服务器上:
举例如192.168.15.240,192.168.15.241,192.168.15.242这三台服务器需要做相互免密码登陆,在每台服务器生成密钥对后,在每台服务器上执行ssh-copy-id命令(具体说明及用法见最后附录),将公钥复制到其它两台服务器上(此处以192.168.15.240为例,用户为root,其它两台步骤相同)
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.241
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.242
以上命令,可以自动将公钥添加到名为authorized_keys的文件中,在每台服务器都执行完以上步骤后就可以实现多台服务器相互无密码登陆了
附ssh-copy-id介绍及用法:
Linux系统里缺省都包含一个名为ssh-copy-id的工具:
# type ssh-copy-id
ssh-copy-id is /usr/bin/ssh-copy-id
你用cat或者more命令看一下就知道ssh-copy-id本身其实就是一个shell脚本,用法很简单:
# ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
再也不用记如何拼写authorized_keys这个文件名了,是不是很爽,可惜别高兴太早了,ssh-copy-id有一个很要命的问题,那就是缺省它仅仅支持SSH运行在22端口的情况,不过实际上出于安全的需要,我们往往都会更改服务器的SSH端口,比如说改成10022端口,这时候你运行ssh-copy-id就会报错了,直接修改ssh-copy-id脚本当然可以修正这个问题,但是那样显得太生硬了,实际上还有更好的办法:
# vi ~/.ssh/config
加上内容:
Host server
Hostname ip
Port 10022
你也可以单独只加入Port一行配置,那样就是一个全局配置,保存后再运行ssh-copy-id命令就不会报错了。
补充:经网友提示,如果端口不是22,不修改config文件,按如下方式也可以:
ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 10022 user@server”
分享到:
相关推荐
多台linux服务器相互无密码访问,又需要的可以打开看看
连接Linux服务器工具SSH 3.2.9 方便快捷!
设置 SSH 无密码登录可以提高 Linux 服务器的安全性和便捷性。在本文中,我们将介绍如何在 Linux 中设置 SSH 无密码登录。 设置 SSH 无密码登录的步骤: 1. 创建 SSH 密钥对 在 Linux 主机 A 上,创建一个 SSH ...
LINUX服务器 大多都是使用SSH方式远程访问 这个是专用的SSH工具
基于python轻松实现批量ssh工具管理多台linux服务器.docx
ssh的相互无密码访问
登录linux服务器ssh软件
两台linux机器之间ssh不需要密码,自己写的和相信,很容易懂。
服务器Centos集群上实现ssh无密码相互访问,解决bash scp command not found问题
Linux配置ssh免密码登录调试文档,对配置hadoop有帮助
ssh远程连接linux系统工具,免费,操作简单,命令行以及文件上传下载。本人用于远程云服务器,亲测很实用,推荐!!!
每次登录测试服务器,ssh登录总是需要输入密码。登录的少还行,登录的多了,多一行命令都是多余的。 rsa认证登录方式 制作密钥对 在客户端(本地机器)终端下输入以下命令 ssh-keygen -t [rsa|dsa] rsa和dsa代表...
SSH 的安全性体现在多方面,包括身份验证、数据加密和访问控制等。身份验证可以使用用户名和密码、公钥和私钥等方式,数据加密可以使用 DES、AES 等加密算法,访问控制可以使用访问控制表(ACL)来限制用户的访问...
本文主要介绍三种方法,在Mac下使用SSH连接远程Linux服务器。 方法一:使用终端 1.打开终端,点击新建远程连接 2.点击加号,然后添加自己服务器的IP地址 3.点击右侧的服务器,然后在下方输入用户名,选择最下方的 ...
Linux 下 SSH 与 SecureCRT 密匙完美使用 在 Linux 系统中,SSH(Secure Shell)是一种常用的远程登录协议,能够提供安全...关键词:Linux、SSH、OpenSSH、RSA、DSA、SecureCRT、密钥认证系统、远程访问、服务器安全。
配置linux ssh免密码登录,第一行生成密钥,第二行是要对哪台机器免密码ssh登录就配置成哪一台,这里root@hadoop00,root是用户名,hadoop00是主机名
ssh无密码登录,关键的是设置权限,防火墙的关闭
SSH Secure Shell服务器Linux连接
SSH登陆LINUX服务器命令
python使用ssh实时得监多台服务器信息,能做到及时预防得效果,不至于那台服务器宕机了还要排查一下