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机器操作:

  1. 先生成秘钥对(公钥和私钥)

进入/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目录需要手动创建;

  1. 手工复制粘贴的方式 将本地id_rsa.pub文件的内容拷贝至远程服务器的~/.ssh/authorized_keys文件中