首先,在本地机器上产生公钥:
[root@localhost .ssh]# ssh-keygen -d 一直按回车键
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
/root/.ssh/id_dsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
89:77:aa:a2:d8:31:35:1e:3a:34:9e:b9:da:ea:62:34 root@localhost.localdomain
[root@localhost .ssh]#
然后把产生的公钥传到想要登陆的远程机器上,如果是root用户登陆远程的话,把公钥放在/root/.sshd目录下面。
[root@localhost .ssh]# scp /root/.ssh/id_dsa.pub root@192.168.0.60:/root/.ssh/
root@192.168.0.60's password: 需输入远程机器的登录密码
id_dsa.pub 100% 616 0.6KB/s 00:00
在远程的机器上修改该文件的名称:
[root@web1 .ssh]# mv id_dsa.pub authorized_keys
最终实现ssh的免密码登陆。
SSH免密码登陆效果:
[root@localhost .ssh]# ssh root@192.168.0.60
Last login: Tue Sep 27 09:03:10 2011 from 192.168.0.3
[root@web1 ~]#
=========================================================================================
二、多台服务器相互无密码访问
多台服务器相互无密码访问,与两台服务器单向无密码访问的原理是一样的,只不过由于是多台服务器之间相互无密码访问,不能象两台服务器无密码登录那样直接上传,步骤如下:
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”
分享到:
相关推荐
执行该操作将在/home/user/.ssh下生成id_rsa, id_rsa.pub文件,其中id_rsa.pub是公钥。 #2、在B机器上做步骤1或自行创建/home/user/.ssh文件夹,注意文件夹权限设置为700,将id_rsa.pub拷贝到B机器上 scp id_rsa.pub...
mysql-community-client-8.0.17-1.el7.x86_64.rpm mysql-community-client-8.0.17-1.el7.x86_64.rpm mysql-community-client-8.0.17-1.el7.x86_64.rpm
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
离线安装包,亲测可用
ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。 语法格式:ssh-copy-id ...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
mysql-community-common-5.7.34-1.el7.x86_64.rpm
用OpenSSL 生成了公钥和私钥文件,格式为PEM的,现在用C#想要从文件中读取公钥和私钥。 生成公钥和私钥方式如下: DSA公私钥可以使用OpenSSL 生成,如下: a) 生成DSA参数 openssl dsaparam -out dsa_param.pem ...
Linux Supervisor的使用还依赖python-meld3,因为python-meld3下载不方便,因此直接将python-meld3-0.6.10-1.el7.x86_64.rpm存于此处.
3 ssh到“被登陆机”把公共密钥输入 “authorized_keys”(如果多个机器都需要使用rsa密钥认证登录此机器的话,将这些机器产生的公钥全部输入到)“authorized_keys” cat id_rsa.pub >> authorized_keys 4 这样就...
nss-softokn-freebl-3.14.3-23.3.0.1.el6_8.i686.rpm是glibc-2.12-1.212.0.1.el6.i686.rpm的依赖包
1.Linux下生成密钥 ssh-keygen的命令手册,通过”man ssh-keygen... id_rsa.pub : 生成的公钥文件 know_hosts : 已知的主机公钥清单 如果希望ssh公钥生效需满足至少下面两个条件: 1) .ssh目录的权限必须是
mysql-connector-odbc-8.0.12-1.el7.x86_64.rpm
mysql-5.7.31server端,rpm安装方式,配合mysql-5.7.31client端使用
DSA签名程序和DSA验证程序。...d. 利用dsa_export函数导出所生成的DSA密钥对的公钥,并保存到文件中(dsa_key.pub),供验证程序使用; e. 对第2步产生的SHA-1值进行签名,保存签名到文件中(signature.txt)
boost159-filesystem-1.59.0-2.el7.x86_64.rpm
boost159-regex-1.59.0-2.el7.1.x86_64.rpm
搭建基于SSH公钥访问的Git远程仓库。附加安全受限shell配置。
Hadoop伪分布模式安装步骤,详细介绍了hadoop伪分布式安装的具体步骤。 部分步骤如下: ...1. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 下面执行ssh localhost测试ssh配置是否正确 1. ssh localhost
clickhouse-common-static-20.9.2.20-2.x86_64.rpm