ssh免密认证机制: 主要原理依据是: 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机器,实现免密登陆 本地主机A: 47.106.155.107 远程主机B:112.74.190.230
A机器操作:
- 先生成秘钥对(公钥和私钥)
进入/root/.ssh目录下可查看秘钥对:
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥 id_rsa : 生成的私钥文件 id_rsa.pub : 生成的公钥文件 know_hosts : 已知的主机公钥清单 如果希望ssh公钥生效需满足至少下面两个条件: 1) .ssh目录的权限必须是700 2) .ssh/authorized_keys文件权限必须是600
2、有一下几种方法: 1)、通过ssh-copy-id的方式 命令: ssh-copy-id -i ~/.ssh/id_rsa.put <romte_ip> 举例:
[root@XL-Jenkins-Game zhaoliliang]# ssh-copy-id -i ~/.ssh/id_rsa.pub "-p9800 ceshi@47.107.76.42"
ceshi@47.107.76.42's password:
Now try logging into the machine, with "ssh '-p9800 ceshi@47.107.76.42'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
注:远程端口是22默认端口,忽略-p参数
常见错误:
-bash: ssh-copy-id: command not found //提示命令不存在
解决办法:yum -y install openssh-clients
2) 通过scp将内容写到对方的文件中
命令:scp -p ~/.ssh/id_rsa.pub
root@<remote_ip>:/root/.ssh/authorized_keys
[root@XL-Jenkins-Game zhaoliliang]# scp -P 9800 ~/.ssh/id_rsa.pub ceshi@47.107.76.42:/home/ceshi/.ssh/authorized_keys
注:若远程机器普通用户家目录下没有.ssh目录需要手动创建;
- 手工复制粘贴的方式 将本地id_rsa.pub文件的内容拷贝至远程服务器的~/.ssh/authorized_keys文件中